Cómo reiniciar la aplicación Java administrada por systemd en errores OutOfMemory

Cómo reiniciar la aplicación Java administrada por systemd en errores OutOfMemory

Tengo la aplicación Java (además del marco Spring Boot) instalada como servicio 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

Cómo gestionar los reinicios del servicio en algunas condiciones, por ejemplo, el reinicio automático después de errores de OutOfMemory

Respuesta1

Como dice Fildor, te sugiero que soluciones los problemas de memoria.

Después de eso una posible solución es:

Si está utilizando Java anterior a 8u92, puede agregar a la JVM el siguiente argumento:

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

en Java versión 8u92 o superior puedes usar -XX:+CrashOnOutOfMemoryo-XX:+ExitOnOutOfMemoryError

Luego configure su servicio para que se reinicie en caso de falla:

Restart=on-failure

o

Restart=always

información relacionada