Как перезапустить Java-приложение, управляемое systemd, при ошибках OutOfMemory

У меня установлено приложение java (поверх Spring Boot framework) как служба 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

5
задан 17 January 2017 в 12:06
1 ответ

Как и сказал Филдор, я предлагаю вам исправить проблемы с памятью.

После этого возможное решение:

Если вы используете Java до 8u92, вы можете добавить к JVM следующий аргумент:

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

в Java версии 8u92 или выше вы можете использовать -XX: + CrashOnOutOfMemory или -XX: + ExitOnOutOfMemoryError

Затем настройте свою службу для перезапуска при сбое:

Restart=on-failure

или

Restart=always
6
ответ дан 3 December 2019 в 01:29

Теги

Похожие вопросы