keepalived 服務器內存持續升高問題

問題現象

線上兩臺 keepalived + lvs 機器,內存都被 slab 佔光了,觀察是 dentry 所佔用的,經過排查,是因爲keepalivedmisc 調用 bash 腳本引起的。即使不是 misc 調用, bash 自己的正常的調用也會引起 slab 內存持續升高(使用 while 命令進行測試)。但是測試環境不是這樣。

查找原因

...略過許多排查步驟。
使用 strace 命令跟蹤腳本的調用,發現 B
腳本的系統調用特別多,而且此腳本的運行速度明顯慢於 A 腳本。

這兩個腳本的區別在於一個檢測 http 服務,一個檢測 https 服務。那麼可能就是在 https 這裏出的問題。

什麼原因呢?於是將 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 穩定了。世界安靜了。

總結:

centOS6 當使用 curl 命令訪問 https 服務的時候就會產生這個情況(因爲nss-softokn這個包的 bug ),調用頻繁就會使得 slab 內存持續明顯上升。

參考如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章