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%近くになるとスワップしちゃうよね?、物理メモリとスワップとの割合で設定したほうがいいと思われます。

<参考>
http://d.hatena.ne.jp/yupo5656/20040624/p1

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA