우당탕탕

systemd Restart와 StartLimit으로 재시작 루프 제어 본문

Linux

systemd Restart와 StartLimit으로 재시작 루프 제어

모찌모찝 2026. 10. 17. 14:22

systemd 서비스 유닛 파일에서 Restart=와 StartLimit 관련 옵션을 활용하면 서비스의 재시작 동작과 재시작 루프를 효과적으로 제어할 수 있습니다.

Restart= 옵션

Restart=는 서비스 프로세스가 종료되었을 때 systemd가 자동으로 재시작할지 여부를 지정합니다. 가능한 값으로는 no (기본값), on-success, on-failure, on-abnormal, on-watchdog, on-abort, always 등이 있습니다. 예를 들어 Restart=on-failure로 설정하면 서비스가 비정상 종료되었을 때만 재시작합니다.

StartLimit 관련 옵션

재시작 루프 방지를 위해 systemd는 StartLimitIntervalSec=와 StartLimitBurst= 옵션을 제공합니다. 이들은 단위 시간 내에 재시작 시도를 제한합니다.

  • StartLimitIntervalSec=: 재시작 시도를 계산하는 시간 간격(초 단위)
  • StartLimitBurst=: 지정한 시간 간격 내 허용되는 최대 재시작 횟수

예를 들어 StartLimitIntervalSec=60과 StartLimitBurst=5로 설정하면, 60초 내에 5회 이상 재시작 시도가 발생하면 추가 재시작을 중단합니다.

재시작 루프 제어

서비스가 실패하여 반복적으로 재시작되는 상황에서, 위 옵션들을 적절히 설정하면 무한 재시작 루프를 방지할 수 있습니다. systemd는 재시작 제한에 도달하면 서비스 시작을 중단하고, 로그에 관련 정보를 기록합니다.

적용 예시

[Service]
ExecStart=/usr/bin/your-service
Restart=on-failure
StartLimitIntervalSec=60
StartLimitBurst=3

위 설정은 서비스가 실패할 경우 최대 3회까지 60초 내에 재시작을 시도하며, 그 이상 실패 시 재시작을 중단합니다.

참고

systemd 서비스 유닛 파일의 [Service] 섹션에서 이 옵션들을 설정할 수 있으며, 자세한 내용은 systemd.service 매뉴얼을 참고하시기 바랍니다.

Comments