【SlabCache】httpsへのcurlの罠

ことの起こり

muninプラグインのhttprespを使わせていただいてます。

tsuchinoko.dmmlabs.com

プラグインの中身は、curlでurlを叩いて、名前解決〜転送終了までを細かく時間を計測できます。

問題は、監視対象をhttpsにしたときに起こりました。

問題点

  • メモリが増えていく。

f:id:tama1029hq:20161212103240j:plain

上記がcurlを叩いているサーバですが、徐々に黄色の部分が増えていっていることが分かります。 これはslab_cacheという部分です。

slab_cacheとは何か また何が使われているのか

  • slab_cacheとはカーネルが使うキャッシュ
  • 調べていくうちに dentry_cacheが大量に作られていて、しかも使われていないことが分かった。
  • ためしにecho 2 > /proc/sys/vm/drop_cachesでキャッシュを消してみるも、またslab_cacheが増えてくことが分かった。

こりゃ根本対処するしかない(´°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)

ぐぐったら同じ状況の人にあたる

s-tajima.hateblo.jp

結局、原因は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が減った。めでたしめでたし。

f:id:tama1029hq:20161212105059j:plain