OOM Killer (Out of Memory Killer)
LinuxのKernelのメモリが足りなくなったときにプロセスを強制で落とす、ちょっと嫌なやつ、あまりお目にかかったことがなかったが、最近見かけるようになってきた、しまいには、OracleとかJavaが落ちるし、対処する方法はググるといろいろあるのだけど、どのプロセスが悪いかが分からないのだけど、なんか調べる方法ないかなぁ。
OOM-Killer停止
echo 0 > /proc/sys/vm/oom-kill
指定のプロセスをKillされないようにする(2.6.11以降)
# echo -17 > /proc/〈プロセスID〉/oom_adj
対策
原因となるメモリオーバーコミットを許可しない
sysctl -w vm.overcommit_memory=2 sysctl -w vm.overcommit_ratio=50
起動時に自動設定するには
/etc/sysctl.conf
vm.overcommit_memory = 2 vm.overcommit_ratio = 50
malloc_limit[MB] = swap領域のサイズ[MB] + (物理メモリ量[MB] * overcommit_ratio / 100)
vm.overcommit_ratio はデフォルト50なので、物理とスワップがたとえば1G+1Gだったら50%のほうがいいのかな?、いろんなサイトは100%近くになっているけど、スワップ無しなら100%確保させてもいいような気がしますが、スワップあると、100%近くになるとスワップしちゃうよね?、物理メモリとスワップとの割合で設定したほうがいいと思われます。
カテゴリー: Linux
最近のコメント