ServersMan@VPSのサーバ内でTOMCAT5とLAMP環境を同居させていたのだけど、メモリ使用率が結構高いのがちょっと気になっていた。
けど、特に問題もないのでそのままにしていたのだが、先日、連動処理のバッチを回そうとしたらメモリ不足で転けたのでメモリの設定を見直すことにした。
どのプロセスがどのくらいメモリを使っているかというのを知るのには、psコマンドにalxオプションを付けるとわかりやすい。
VSZ項目がバーチャル、RSSがリアルのメモリ消費。
今回かけたら、タイトルのTOMCAT5がバーチャルで1.2GB程消費していた。
他のプロセスが500MBほど消費しているので、合計で1.7GB消費している状態。 うちの環境ではMax4GBだが、通常時は2GBくらいが使える領域であるので、余裕は300MBと言うことだ。
しかし、見かけ上は4GBメモリがあるので、TOMCATが自動的にワーク用に1GB確保していて、本体の200MB+1GBで1.2GBになっている状態だった。
Javaサイトの占有メモリは1接続で50MBもあれば十分なので、メモリの確保超過。
/etc/sysconfig/tomcat5ファイルにCATALINA_OPTS=”-Xmx384M”として、384MB上限設定としてTOMCATをリスタートしてやると、TOMCATプロセスは600MB程度に収まって、全体で1.1GB消費で余裕が900Mになって、問題解消。
ServersMan@VPSのようにMax割り当てできないけど見た目だけメモリ量が多い場合、自動割り当てをするプログラムには注意が必要だ(VMware ESXiの仮想マシンで多めにメモリ指定している場合なども)
(506)