Amazon ECS Express Mode 서비스 문제 해결
이 섹션은 Express Mode 서비스를 배포하고 관리할 때 발생하는 일반적인 문제를 식별하고 해결하는 데 도움이 됩니다.
배포 관련 문제
서비스가 활성 또는 드레이닝 중 상태에서 멈춤
증상: DescribeServiceRevisions는 리소스가 여전히 프로비저닝 중이거나 프로비저닝 해제 중임을 보여줍니다. DescribeServices에 배포가 안정화되지 않은 것으로 표시됩니다.
가능한 원인 및 해결 방법:
-
IAM 권한 부족 - 태스크 실행 역할 및 인프라 역할에 해당 관리형 정책에 표시된 대로 필요한 권한이 있는지 확인합니다.
# Check if the role has the required managed policy aws iam list-attached-role-policies --role-name ecsTaskExecutionRole -
이미지 가져오기 실패 - 컨테이너 이미지가 존재하고 액세스할 수 있는지 확인합니다.
# Test image pull manually docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-app:latest -
네트워크 연결 문제 - 서브넷에 AWS 서비스에 대한 인터넷 액세스 또는 Amazon VPC 엔드포인트가 있는지 확인합니다.
-
리소스 제한 - 계정에 Fargate 용량이 충분하고 서비스 할당량에 도달하지 않았는지 확인합니다.
진단 단계:
DescribeExpressGatewayService를 사용하여 현재 서비스 개정을 가져온 다음 ServiceRevision에 대한 DescribeServiceRevisions를 사용하여 프로비저닝 또는 프로비저닝 해제 상태를 확인하세요.
자세한 오류 메시지는 Amazon ECS 콘솔에서 서비스 이벤트를 확인하세요.
컨테이너 포트가 올바르게 설정되었는지 확인하세요.
Amazon ECS 및 Fargate의 AWS 서비스 할당량을 확인하세요.
태스크 시작 장애
증상: 태스크가 시작되지 않거나 시작 후 즉시 중지됩니다.
일반적인 원인:
-
애플리케이션 오류 - 구성 또는 런타임 오류로 인해 컨테이너 애플리케이션이 종료됩니다.
-
상태 확인 실패 - 애플리케이션이 예상 포트 또는 경로의 상태 확인에 응답하지 않습니다.
-
리소스 제약 조건 - 애플리케이션에 대한 CPU 또는 메모리 할당이 부족합니다.
-
누락된 환경 변수 또는 보안 암호 - 애플리케이션에서 필수 구성을 사용할 수 없습니다.
해결 단계:
-
CloudWatch Logs에서 애플리케이션 로그를 확인하고 DescribeServiceRevisions에서 로그 그룹 이름을 가져오세요.
aws logs describe-log-streams --log-group-name /ecs/express-service-my-app aws logs get-log-events --log-group-name /ecs/express-service-my-app --log-stream-name stream-name 상태 확인 경로가 HTTP 200 상태를 반환하는지 확인하세요.
컨테이너 이미지를 로컬에서 테스트하여 올바르게 시작되었는지 확인하세요.
필요한 경우 CPU 및 메모리 할당을 검토하고 조정하세요.
연결 문제
로드 밸런서를 통해 애플리케이션에 도달할 수 없음
증상: 애플리케이션 URL이 제한 시간 또는 연결 오류를 반환합니다.
문제 해결 단계:
-
리소스가 프로비저닝을 완료했는지 검증하세요.
-
태스크가 실행 중이고 정상인지 확인하세요.
aws ecs describe-services --cluster my-cluster --services my-express-service -
Application Load Balancer 대상 그룹의 상태를 확인하세요.
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account:targetgroup/name/id -
애플리케이션이 컨테이너 내부의 올바른 포트에서 수신 대기하고 있는지 확인하세요.
성능 문제
느린 응답 시간
증상: 애플리케이션 응답이 예상보다 느립니다.
진단 접근 방식:
-
CPU 및 메모리 사용률을 모니터링하세요.
# Check CloudWatch metrics for the service aws cloudwatch get-metric-statistics \ --namespace AWS/ECS \ --metric-name CPUUtilization \ --dimensions Name=ServiceName,Value=my-express-service Name=ClusterName,Value=my-cluster \ --start-time 2024-01-01T00:00:00Z \ --end-time 2024-01-01T01:00:00Z \ --period 300 \ --statistics Average 애플리케이션 로그에서 오류 또는 성능 경고를 검토하세요.
오토 스케일링이 로드에 적절하게 응답하는지 확인하세요.
요청 배포에 대한 로드 밸런서 지표를 분석하세요.
최적화 전략:
리소스가 제한된 경우 CPU 또는 메모리 할당을 늘립니다.
오토 스케일링 임계치를 조정하여 앞서 스케일 아웃합니다.
애플리케이션 코드 및 데이터베이스 쿼리를 최적화합니다.
오토 스케일링이 예상대로 작동하지 않음
증상: 로드가 높은 부하에서 스케일 업되지 않거나 낮은 부하에서 스케일 다운되지 않습니다.
문제 해결 단계:
-
오토 스케일링 정책 및 해당 구성을 확인하세요.
aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-express-service CloudWatch 지표를 검토하여 조정 트리거가 충족되고 있는지 확인하세요.
서비스에 조정 권한이 있는지 확인하세요(IAM 역할 확인).
조정 활동과 그 결과를 확인하세요.
모니터링 및 디버깅 도구
CloudWatch Container Insights 사용
포괄적인 모니터링을 위해 Container Insights를 활성화합니다.
aws ecs put-account-setting --name containerInsights --value enabled
Container Insights에서는 다음을 제공합니다.
CPU, 메모리, 디스크 및 네트워크 지표
성능 모니터링 대시보드
로그 상관관계 및 분석
이상 탐지