So starten Sie eine von systemd verwaltete Java-App bei OutOfMemory-Fehlern neu

So starten Sie eine von systemd verwaltete Java-App bei OutOfMemory-Fehlern neu

Ich habe die Java-App (auf dem Spring Boot-Framework) als systemd-Dienst installiert.

[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

So verwalten Sie Dienstneustarts unter bestimmten Bedingungen, z. B. den automatischen Neustart nach OutOfMemory-Fehlern

Antwort1

Wie Fildor sagt, schlage ich vor, dass Sie die Speicherprobleme beheben.

Danach ist eine mögliche Lösung:

Wenn Sie Java vor 8u92 verwenden, können Sie der JVM das folgende Argument hinzufügen:

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

in Java Version 8u92 oder höher können Sie verwenden -XX:+CrashOnOutOfMemoryoder-XX:+ExitOnOutOfMemoryError

Konfigurieren Sie dann Ihren Dienst so, dass er bei einem Absturz neu gestartet wird:

Restart=on-failure

oder

Restart=always

verwandte Informationen