【SlabCache】httpsへのcurlの罠
ことの起こり
muninプラグインのhttprespを使わせていただいてます。
プラグインの中身は、curlでurlを叩いて、名前解決〜転送終了までを細かく時間を計測できます。
問題は、監視対象をhttpsにしたときに起こりました。
問題点
- メモリが増えていく。
上記がcurlを叩いているサーバですが、徐々に黄色の部分が増えていっていることが分かります。
これはslab_cache
という部分です。
slab_cacheとは何か また何が使われているのか
- slab_cacheとはカーネルが使うキャッシュ
- 調べていくうちに dentry_cacheが大量に作られていて、しかも使われていないことが分かった。
- ためしに
echo 2 > /proc/sys/vm/drop_caches
でキャッシュを消してみるも、またslab_cacheが増えてくことが分かった。
こりゃ根本対処するしかない(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)
ぐぐったら同じ状況の人にあたる
結局、原因はcurlのバグのようなものです。
対処方法
Bug 1044666 – Can curl HTTPS requests make fewer access system calls?
- 上記で報告されてますが、
nss-softokn-3.14.3-12.el6
より上のバージョンにする。 - curl叩く直前に
export NSS_SDB_USE_CACHE =yes
入れる。
結果
綺麗にslab_cacheが減った。めでたしめでたし。