1〜2ヶ月に1度程度、サーバが止まってしまう事がある。原因はメモリ不足によるoom killer(Out of Memory Killer)の発動のせい。oom killerはメモリが確保できるようになるまで、稼働しているプロセスを(無作為に?)殺して回るために、いろんなサービスが停止してしまう。(そもそも、こんな仕組みで問題ないんだろうか、、、)
httpdなんかが止まればすぐに気づくが、telnetdやftpdが止まってもしばらく気がつかない事もある。毎朝logwatchメールには目を通してるんだけど、oom killerはなぜかレポートに含まれてこない。
何が原因でメモリ不足が発生するのか原因は未だ分かっていないので対策できないでいる。たぶんapache関係だと思うんだけど。(MTへのTBアタックとか)
何も考えずにメモリを増やす(現在512MB)という手もあるけど、ECC付きのメモリは高価だし、そもそも定常状態では512MBで十分なので安易にメモリ拡張するのもなんだかなぁ。
# free
total used free shared buffers cached
Mem: 514508 457212 57296 0 18420 114176
-/+ buffers/cache: 324616 189892
Swap: 506036 360 505676
定常的には約190MBもメモリに余裕がある。
とりあえずlogwatchにoom killerのメッセージが出るようにして、早めに対応できるようにしたいと思います。