Amazon ECS 서비스 제한 로직
Amazon ECS 서비스 스케줄러에는 서비스 작업이 반복적으로 시작에 실패하는 경우 서비스 작업이 시작되는 빈도를 제한하는 로직이 포함됩니다.
서비스에 대한 태스크가 반복적으로 RUNNING
상태에 들어가지 못하는 경우(PENDING
에서 STOPPED
상태로 바로 진행), 후속 다시 시작 시도 간격이 최대 27분으로 점차 증가합니다. 이 최대 기간은 향후 변경될 수 있습니다. 이 동작은 장애가 있는 작업이 Amazon ECS 클러스터 리소스 또는 Fargate 인프라 비용에 미치는 영향을 감소시킵니다. 서비스가 스로틀 로직을 시작하면 다음과 같은 서비스 이벤트 메시지가 수신됩니다.
(service
service-name
) is unable to consistently start tasks successfully.
Amazon ECS는 실패한 서비스가 재시도하는 것을 중지하지 않습니다. 또한 다시 시작 간격을 증가시키는 것 이외에 다른 방법으로 이를 수정하려고 시도하지 않습니다. 서비스 스로틀 로직은 사용자가 조정할 수 있는 파라미터를 제공하지 않습니다.
새로운 태스크 정의를 사용하도록 서비스를 업데이트하면 서비스에서 정상적인 비 스로틀 상태가 즉시 반환됩니다. 자세한 내용은 콘솔을 사용하여 Amazon ECS 서비스 업데이트 단원을 참조하십시오.
다음은 이러한 로직을 시작하는 몇 가지 일반적인 원인입니다. 문제를 해결하려면 수동으로 작업을 수행하는 것이 좋습니다.
-
태스크를 호스팅하는 데 사용하는 리소스(예: 클러스터의 포트, 메모리 또는 CPU 유닛)가 부족합니다. 이 경우 리소스 부족 서비스 이벤트 메시지를 참조하세요.
-
Amazon ECS 컨테이너 에이전트가 태스크 도커 이미지를 가져올 수 없습니다. 이 문제는 컨테이너 이미지 이름, 이미지 또는 태그가 잘못되었거나 프라이빗 레지스트리 인증 또는 권한이 부족하기 때문에 발생할 수 있습니다. 이 경우 중지된 작업 오류에
CannotPullContainerError
가 함께 나타납니다. -
컨테이너 인스턴스에 컨테이너를 생성할 디스크 공간이 부족합니다. 이 경우 중지된 작업 오류에
CannotCreateContainerError
가 함께 나타납니다. 자세한 정보는 Amazon ECS의 Docker API error (500): devmapper 문제 해결을 참조하세요.
중요
RUNNING
상태에 도달한 후 중지된 태스크는 스로틀 로직 또는 관련 서비스 이벤트 메시지를 시작하지 않습니다. 예를 들어 서비스에 대한 Elastic Load Balancing 상태 확인이 실패하여 작업에 비정상 플래그가 지정되고, Amazon ECS가 태스크를 등록 취소하고 태스크를 중지한다고 가정합니다. 이 시점에서 태스크는 제한되지 않습니다. 0이 아닌 종료 코드가 나타나며 태스크의 컨테이너 명령이 즉시 종료되더라도, 태스크는 이미 RUNNING
상태로 이동했습니다. 명령 오류로 인해 즉시 실패한 태스크는 스로틀이나 서비스 이벤트 메시지를 발생시키지 않습니다.