У меня установлено приложение 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
Как сказал Филдор, я предлагаю вам решить проблемы с памятью.
После этого возможным решением будет:
Если вы используете Java до версии 8u92, вы можете добавить в JVM следующий аргумент:
java -jar <jar-name> -XX:OnOutOfMemoryError="kill -9 %p"
в Java версии 8u92 или выше вы можете использовать -XX:+CrashOnOutOfMemory
или-XX:+ExitOnOutOfMemoryError
Затем настройте службу на перезапуск при сбое:
Restart=on-failure
или
Restart=always