我已将 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