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 錯誤後的自動重啟
就像 Fildor 說的,我建議你修復記憶體問題。
之後可能的解決方案是:
如果您使用的是 8u92 之前的 Java,您可以向 JVM 添加以下參數:
java -jar <jar-name> -XX:OnOutOfMemoryError="kill -9 %p"
在 Java 8u92 或更高版本中,您可以使用
-XX:+CrashOnOutOfMemory
或-XX:+ExitOnOutOfMemoryError
然後將您的服務配置為在崩潰時重新啟動:
Restart=on-failure
或者
Restart=always