线上两台 keepalived + lvs
机器,内存都被 slab
占光了,观察是 dentry
所占用的,通过排查,是由于keepalived
的 misc
调用 bash
脚本引发的。即便不是 misc
调用, bash
本身的正常的调用也会引发 slab
内存持续升高(使用 while 命令进行测试)。可是测试环境不是这样。bash
...略过许多排查步骤。
使用 strace
命令跟踪脚本的调用,发现 B
脚本的系统调用特别多,并且此脚本的运行速度明显慢于 A 脚本。 curl
这两个脚本的区别在于一个检测 http 服务,一个检测 https 服务。那么可能就是在 https 这里出的问题。ide
什么缘由呢?因而将 strace
的结果输出到一个文件里,在文件里观察发现最多的就是 access("/etc/pki/nssdb/.273583784_dOeSnotExist_.db", F_OK) = -1 ENOENT (No such file or directory)
。查看此目录是由 nss 这个包产生的测试
[root@SZ-CORE-LVS-02 keepalived]# rpm -qf /etc/pki/nssdb/ nss-3.28.4-4.el6_9.x86_64
,而后搜索了 /etc/pki/nssdb/.273591295_dOeSnotExist_.db
这个错误,发现了下面的几个连接,
原来这是 nss-softokn 的一个 bug, 有修改源码的方式,可是那样还得从新编译,最简单的方式就是
配置一个环境变量。export NSS_SDB_USE_CACHE=no
,一句话,立竿见影,slab 稳定了。世界安静了。url
centOS6
当使用 curl
命令访问 https
服务的时候就会产生这个状况(由于nss-softokn
这个包的 bug ),调用频繁就会使得 slab 内存持续明显上升。code