Amazon ECS 작업에 대한 호출 또는 요청의 지연 시간 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

요청 응답이 느린 Amazon Elastic Container Service(Amazon ECS) 애플리케이션 문제를 해결하려고 합니다.

간략한 설명

ECS 작업에서 지연 시간이 길어지는 일반적인 원인은 다음과 같습니다.

  • 작업의 CPU 또는 메모리(RAM) 사용률이 높습니다.
  • 애플리케이션 내에서 실행되는 애플리케이션 종속성 관련 문제
  • 클라이언트 또는 온프레미스 대상과 ECS 작업 간의 긴 네트워크 거리.
  • 네트워크 연결 문제, 노후.
  • Amazon Elastic Block Store(Amazon EBS) 볼륨 스로틀링.

이러한 문제를 조사하고 해결하려면 먼저 지연이 발생한 위치를 파악한 다음 해결 방법 단계를 완료하십시오.

해결 방법

ECS 작업의 긴 지연 시간 문제를 해결하려면 다음 단계를 완료하십시오.

  1. 다음 명령을 실행하여 첫 번째 바이트 응답을 측정하고 지연 시간을 유발할 수 있는 느린 DNS 확인이 있는지 여부를 확인합니다.

    % curl -kso /dev/null -w "\n===============
    | DNS lookup: %{time_namelookup}
    | Connect: %{time_connect}| App connect: %{time_appconnect}
    | Pre-transfer: %{time_pretransfer}
    | Start transfer: %{time_starttransfer}
    | Total: %{time_total}
    | HTTP Code: %{http_code}\n===============\n" https://LOAD_BALANCER_DNS_NAME.com
    
    Example output:
    | DNS lookup: 0.035596
    | Connect: 0.063130
    | App connect: 0.159145
    | Pre-transfer: 0.159264
    | Start transfer: 0.190203
    | Total: 0.190722
    | HTTP Code: 200

    참고: 위의 출력 예시는 ms 시간대 단위입니다. VPC 내부에서 초기 테스트를 실행하여 다양한 네트워킹 경로와 관련된 변수를 줄이는 것이 바람직합니다.

  2. 다음으로, 로드 밸런서를 우회합니다. 실행 중인 알려진 작업의 작업 IP 주소를 사용하여 위의 curl을 지시합니다. 이 프로세스는 지연 시간을 유발하는 구성 요소를 격리하는 데 도움이 됩니다.

  3. Application Load Balancer가 있는 경우 Amazon CloudWatch TargetResponseTime 지표의 평균 통계에서 값이 과도하게 높은지 확인하십시오.

    값이 높으면 작업에 문제가 있거나 외부 연결에 대한 애플리케이션 종속성이 있을 수 있습니다. 자세한 내용은 Application Load Balancer에 대한 TargetResponseTime 지표가 증가하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

    작업의 수가 많으면 Application Load Balancer의 액세스 로그 항목을 활성화 및 검토하여 백엔드 인스턴스를 식별합니다.

  4. Application Load Balancer 관련 문제를 확인하려면 로그 항목의 request_processing_timeresponse_processing_time 필드에서 시간이 비정상적으로 높은지 검토하십시오. 자세한 내용은 Elastic Load Balancing에서 Application Load Balancer의 높은 지연 속도 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오. 작업 IP 주소에서 직접 curl 작업을 실시하고 응답이 느린 경우 CloudWatch Container Insights를 검토합니다.

  5. CPU 및 메모리 사용률이 평균 90% 미만이고 폭증이 없는 경우 지연 시간을 유발할 수 있는 애플리케이션 작업에 대한 종속성을 확인하십시오. 종속성에는 Amazon Simple Storage Service(Amazon S3) 버킷, Amazon Relational Database Service(Amazon RDS) 데이터베이스 또는 기타 원격 웹 서비스와 같은 외부 리소스에 대한 호출이 포함됩니다.

  6. 외부 호출이 애플리케이션의 예상 워크플로의 일부분인 경우 애플리케이션 개발업체에 외부 종속성에 대한 동기식 호출을 수행하는지 여부를 확인하십시오. 또는 이러한 호출에 대한 응답을 수신할 때까지 애플리케이션을 잠그십시오. 자세한 내용은 비동기식 호출 관리를 참조하십시오.

  7. EC2 컨테이너 인스턴스에서 호스팅하는 경우 Amazon EBS 볼륨 및 네트워크 인터페이스에서 사용률이 과도하게 높은 징후가 있는지 확인하십시오. 자세한 내용은 EC2 인스턴스의 EBS 볼륨 성능 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오. EBS 스로틀링 징후가 감지되면 EBS 프로비저닝된 IOPS와 처리량 유형을 검토하고 늘리십시오. 또는 인스턴스 저장소나 Elastic Fabric Adapter(EFA) 등의 다른 옵션을 사용하십시오.

    네트워크 인터페이스 스로틀링 징후를 감지하는 경우 네트워킹 대역폭이 더 큰 인스턴스 유형을 사용하십시오. 또는 더 큰 최적화 기준을 제공하는 네트워크 향상 인스턴스 유형을 사용하십시오. 자세한 내용은 내 평균 사용률이 낮은데 Amazon EC2 인스턴스가 네트워크 제한을 초과하는 이유는 무엇입니까?를 참조하십시오.

  8. AWS Fargate에서 호스팅하는 경우 Amazon ECS 네트워크 사이드카 컨테이너를 사용하여 네트워크 인터페이스 지표를 확인합니다. 사이드카 컨테이너를 추가하려면 새 작업 정의를 사용하여 배포해야 합니다.

AWS 공식
AWS 공식업데이트됨 한 달 전