如何在出現 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

就像菲爾多說的那樣,我建議你解決記憶體問題。

之後可能的解決方案是:

如果您使用的是 8u92 之前的 Java,您可以為 JVM 新增以下參數:

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

在 Java 版本 8u92 或更高版本中,您可以使用-XX:+CrashOnOutOfMemory-XX:+ExitOnOutOfMemoryError

然後將您的服務配置為在崩潰時重新啟動:

Restart=on-failure

或者

Restart=always

相關內容