結論:
偉大な先人が地雷を踏み抜いていてくれた。
プロセスのメモリ使用量が少ないのにメモリ使用量が増加していた時に調査、対応したこと
解決策なども詳細に書かれているので同じことを書く必要性を感じないので省きます。
現象としてはps
コマンドなどでメモリの使用量を確認したが特にメモリを圧迫するようなプロセスは見当たらないのに間違いなくメモリの使用量が圧迫されていました。
実際にはslab
の消費量がとんでもないサイズになっており、これがメモリを圧迫していたということになります。
当初の推測
当初アプリケーション側の実装でメモリリークしているか、アプリケーション側でキャッシュしているデータサイズが解放される量
< 蓄積される量
になってしまっており圧迫しているのか?と考えていました。
実際、インスタンス立ち上げ後から徐々にメモリの使用量が増加傾向にあり、ここ最近はほぼ横ばいであったことから急激なメモリ枯渇ではなく緩やかなメモリ枯渇だと考えたからです。
反省点:
top
コマンドとfree
コマンドでメモリの使用量などは確認していたのですがプロセスが使用しているメモリ量に問題がないことが明らかだったため/proc/meminfo
を確認することを省いてしまいました。
これこそが今回の障害の原因に気づくのが遅れた最大の原因であり、反省点です。
プロセスのメモリに問題がないから/proc/meminfo
をみても同じだろうと思い、省略してしまい何か別の原因があるのだと思いこんでしまいました。
「推測するな、計測せよ!」の原則はどのようなときでも行わなければいけませんね。
教訓
障害対応時は愚直さこそが正義。
きちんと調べるべきことを調べて計測した結果のみにフォーカスする。
推測は最後の手段。