OutOfMemory エラーが発生したときに systemd によって管理される Java アプリを再起動する方法

OutOfMemory エラーが発生したときに systemd によって管理される Java アプリを再起動する方法

Java アプリ (Spring Boot フレームワーク上) を systemd サービスとしてインストールしました。

[Unit]
Description=${module_name}-service
Requires=network.target
After=syslog.target

[Service]
User=${user_name}
ExecStart=/opt/${module_name}/${module_name}-${version}.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

OutOfMemory エラー後の自動再起動など、いくつかの条件でのサービスの再起動を管理する方法

答え1

Fildor が言うように、メモリの問題を修正することをお勧めします。

その後の解決策としては、次のことが考えられます。

8u92 より前の Java を使用している場合は、JVM に次の引数を追加できます。

java -jar <jar-name> -XX:OnOutOfMemoryError="kill -9 %p"

Javaバージョン8u92以降では、-XX:+CrashOnOutOfMemoryまたは-XX:+ExitOnOutOfMemoryError

次に、クラッシュ時にサービスを再起動するように設定します。

Restart=on-failure

または

Restart=always

関連情報