Help us understand the problem. What is going on with this article?

httpsでリクエストをするとslab cacheが増えて解放されない

More than 3 years have passed since last update.

httpsでリクエストをするとslab cacheが増えて解放されない

他にも記事があるけど自分もハマったので。

apiで運用していると直面する問題

  • 他のサイトからデータを収集しているサーバー
  • マイクロサービスアーキテクチャでapi連携しているサーバー
  • 内部のAPIサーバをhttpからhttpsに切り替えると起きる
  • 常駐するデーモンやcronで叩かれるコマンド、プログラムが終了しても残るのが特徴

リソースモニタ

  • 以下のグラフのように黄色のslab cacheがジリジリ増えてきて最終的にメモリ不足になる

memory-day.png

対応方法

  • 二つの方法がある

ジリジリ増えるならcronで1日一回以下のコマンドを実行

/bin/echo 2 > /proc/sys/vm/drop_caches

一気に増えるなら環境変数を設定する

やり方は2パターンあるらしい

export NSS_SDB_USE_CACHE="yes"
export TMPDIR=/dev/shm

おまけ

slabの中身の確認

slabtopコマンドでどのくらいの容量になっているかわかります

slabtop
115563 115410  99%    0.19K   5503   21     22012K dentry

ps

httpsリクエストでのslabキャッシュの影響はlibcurl使ってるphpやapacheでよく起きます。他にはクラウドを操作するコマンドなど。
nodejsはlibcurl使っていないので起きない。

参考

アプリケーション内でhttpsによる外部APIを叩いているサーバのメモリ使用量が増加し続ける件について
slab肥大化とdentry_cacheに辿り着くまでの話
aws sdkを使っているとslabキャッシュが増大化していく
サーバーのメモリが少しずつ圧迫される原因と対策を調べてみた

you21979@github
なにごとも初心者です
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away