Tomcat プロセスが OOM Killer により強制的に停止される問題の対応方法


 Tomcat プロセスが強制的に停止されてしまう問題が発生しました。


環境

Ubuntu 20.04.3 LTS

Apache Tomcat 7.0.35


原因

OS のメモリ不足により、OutOfMemory が発生し、Linux OOM Killer により、Tomcat プロセスが強制的に停止されていました。


対応

下記 2 つの対応を実施して解決しました。

・Tomcat のヒープサイズが大きかったため、チューニングして小さい値にする。

・Tomcat プロセスが OOM Killer により強制的に停止されないようにする。


Tomcat プロセスが OOM Killer により強制的に停止されないようにするために、下記のコマンドを実行するシェルを作成して、Tomcat 起動時にシェルを実行するようにしました。


コマンド

TOMCAT_PID=`ps -ef|grep -v "grep"|grep "tomcat"|awk '{ print $2 }'`

echo -1000 > /proc/$TOMCAT_PID/oom_score_adj

上記のコマンドでは、Tomcat プロセスのプロセス ID を取得して、プロセス強制停止の優先度を設定することで、Tomcat プロセスを強制停止の対象外としています。


下記のコマンドを実行して、Tomcat プロセスが強制停止の対象外となっていることを確認します。コマンド実行結果が下記のように、-1000、0 になっていれば OK です。


コマンド

cat /proc/Tomcat のプロセス ID/oom_score_adj

-1000

cat /proc/Tomcat のプロセス ID/oom_score

0


補足

下記のログに OOM killer により、プロセスが強制停止された場合、その情報がログ出力されています。


/var/log/syslog



スポンサーリンク

0 件のコメント :

コメントを投稿