OOM kill of mm-less task

CentOS3のWeb/ApサーバのTomcatが落ちてしまった。/var/log/messagesにはこんなログが。


Jul 25 03:23:27 centos3 kernel: Out of Memory: Killed process 8099 (java).
Jul 25 03:23:28 centos3 kernel: Fixed up OOM kill of mm-less task

OOM kill of mm-less taskって何じゃーと思いちょっと検索してみる。ふむふむ。OOM-Killerとは、Out-of-memory killer の略なのか。「システムが必要なメモリ領域を新たに獲得できない場合に、プロセスを強制終了することで空きメモリを獲得するLinuxカーネルの機能。」「システムがメモリ不足の時にタスクを強制終了させ使用しているメモリリソースを解放する。」

なるほど、これはあまり詳しく知らなかった。GCログとsysstatのログをつき合わせてみたところ、結局サーバ全体のメモリが足りなくなっていたことがわかった。sysstatのデータからは、メモリ使用率はずっと100%付近に張りついており、バッチ処理が流れ始めた時間帯からスワップが100%の状態となっていた。
Tomcat(というかJVMになるのかな)のメモリサイズを最小と最大で同サイズとしていなかったことで原因の調査に時間がかかってしまった。