OutOfMemory 오류 시 systemd에서 관리하는 Java 앱을 다시 시작하는 방법

OutOfMemory 오류 시 systemd에서 관리하는 Java 앱을 다시 시작하는 방법

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

관련 정보