설명
재시작 정책은 장애가 발생했을 때 서비스가 자동으로 복구를 시도하도록 도와주지만, 값이 너무 크거나 일관되지 않으면 장애 상황을 오히려 복잡하게 만들 수 있습니다. on-failure는 프로세스가 0이 아닌 종료 코드로 끝났을 때 적용되며 unhealthy 상태만으로 실행되지는 않습니다.
on-failure:5처럼 재시도 횟수를 제한할 수 있습니다. 5는 예시 기준이며 모든 서비스에서 10보다 안전하다는 뜻은 아닙니다. 무제한 또는 과도한 재시작은 장애를 숨기고, 반대로 너무 낮은 값은 일시적 오류에도 서비스가 빨리 멈추게 만들 수 있습니다.
잠재적 영향
- 장애가 반복되는데도 컨테이너가 계속 재시작하며 원인 파악이 늦어질 수 있습니다.
- 반대로 적절한 재시도 기준이 없으면 일시적 오류에도 서비스가 빨리 중단될 수 있습니다.
- 서비스별 재시작 기준이 제각각이면 운영 대응과 모니터링이 복잡해집니다.
해결 방법
restart: on-failure:5처럼 서비스의 복구 요구에 맞는 유한한 재시도 횟수를 설정하세요.deploy.restart_policy.max_attempts를 사용하면window에 따른 실패 집계 방식도 함께 검토하세요. 두 설정의 횟수를 기계적으로 같은 의미로 취급하지 마세요.- 서비스 중요도와 복구 특성을 반영하되 팀 표준을 일관되게 유지하고 반복 실패를 모니터링하세요.
예시
두 예제는 재시도 상한을 비교합니다. 실제 장애 복구 요구에 따라 적절한 값을 선택하세요.
변경 전
yaml
services:
customer:
image: whoa/hello
restart: on-failure:10
변경 후
yaml
services:
customer:
image: whoa/hello
restart: on-failure:5
설명:
- 변경 전: 비정상 종료 후 최대 10회 재시도를 설정합니다. 이 값 자체가 안전하지 않다는 의미는 아니며 실제 복구 요구와 비교해야 합니다.
- 변경 후: 재시도 상한을 5회로 줄입니다. 일시적 오류에서 필요한 복구 시도까지 차단하지 않는지 시험하세요.