API Gateway에서 엣지 최적화 API 엔드포인트의 지연 시간 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

클라이언트가 Amazon API Gateway에서 엣지 최적화 API에 요청을 보낼 때 지연 시간이 길어지는 문제가 발생하고 있습니다. 문제 해결을 위해 지연 시간이 길어지는 원인을 찾으려면 어떻게 해야 하나요?

간략한 설명

엣지 최적화 API 엔드포인트의 지연 시간이 길어지는 원인을 찾으려면 연결 경로의 다음 각 부분에서 소요되는 시간을 확인합니다.

중요: 이러한 연결 경로 단계는 리전 API 엔드포인트가 아닌 엣지 최적화 API 엔드포인트에만 적용됩니다. 엣지 최적화 API는 Amazon CloudFront 배포를 통해 액세스합니다. 리전 API 엔드포인트는 CloudFront를 통해 액세스할 수 없습니다

  1. DNS 이름 확인에 연결 시작.
  2. CloudFront에 연결하기 위한 전송 제어 프로토콜(TCP) 핸드셰이크에 대한 연결 시작
  3. CloudFront에 연결하기 위한 보안 소켓 계층(SSL) 핸드셰이크에 대한 연결 시작
  4. CloudFront에 클라이언트 HTTP 요청 보내기 연결 시작.
  5. CloudFront에서 전송된 첫 번째 바이트에 연결 시작.
  6. API 대한 요청 및 응답의 총 시간
  7. API Gateway가 요청을 처리하고 CloudFront 엣지 로케이션에 응답할 시간
  8. 통합 엔드포인트가 API Gateway의 HTTP 요청에 응답하는 데 걸리는 시간
  9. API Gateway가 CloudFront 엣지 로케이션에 응답하고 CloudFront가 클라이언트에 응답할 시간

연결 경로에서 가장 오래 걸리는 부분이 대기 시간의 소스입니다.

참고: AWS X-Ray를 사용하여 Amazon API Gateway REST API를 통해 기본 서비스로 이동하는 사용자 요청을 추적하고 분석할 수 있습니다. API Gateway는 X-Ray를 사용할 수 있는 AWS 리전의 모든 API Gateway REST API 엔드포인트 유형에 대해 X-Ray 추적을 지원합니다. X-Ray를 사용할 수 있는 모든 리전을 보려면 AWS 리전 표를 참조하세요.

해결 방법

curl_for_latency Bash 스크립트를 실행합니다.

API의 연결 경로 프로세스의 1~6단계 지속 시간을 확인하려면 GitHub에서 curl_for_latency Bash 스크립트를 실행합니다.

중요: URL, HTTP 메서드파라미터 값을 API의 정보와 일치하도록 바꿔야 합니다.

스크립트는 API가 다음 연결 경로 단계를 완료하는 데 걸리는 시간을 반환합니다.

  1. DNS 이름 확인에 연결 시작("time_namelookup")
  2. CloudFront에 연결하기 위해 TCP 핸드셰이크에 연결 시작("time_connect")
  3. CloudFront에 연결하기 위해 SSL 핸드셰이크에 연결 시작("time_appconnect")
  4. CloudFront에 클라이언트 HTTP 요청 보내기 연결 시작("time_pretransfer")
  5. CloudFront에서 전송된 첫 번째 바이트에 연결 시작("time_starttransfer")
  6. API에 대한 요청 및 응답에 걸린 총 시간(“time_total”)

지연 시간에 영향을 미치는 이벤트를 식별한 후에는 CloudFront에서 문제를 해결하고 증가된 지연 시간을 줄이려면 어떻게 해야 하나요?를 참조하세요.

API Gateway가 요청을 처리하고 CloudFront 엣지 로케이션에 응답하는 데 걸리는 시간을 확인합니다.

CloudWatch 콘솔에서 API에 대한 Latency 지표를 검토합니다. 그런 다음 1분 간격최대값에 대한 대기 시간 지표 그래프 설정을 구성하여 1분 기간 내에 가장 긴 처리 시간을 확인합니다.

지침은 CloudWatch 콘솔에서 API Gateway 지표 보기를 참조하세요.

통합 엔드포인트가 API Gateway의 HTTP 요청에 응답하는 데 걸리는 시간 확인

CloudWatch 콘솔에서 IntegrationLatency 지표를 검토합니다. 그런 다음 1분 간격최대값에 대한 IntegrationLatency 그래프 설정을 구성하여 1분 기간 내에 가장 긴 처리 시간을 확인합니다.

또는

API에 대해 CloudWatch 로깅을 활성화한 경우 다음과 유사한 라인 항목에 대한 로그를 검토합니다.

Received response. Integration latency: 325 ms

추가 지연 시간 문제를 해결하기 위해 액세스 로깅과 함께 $context 변수를 추가할 수도 있습니다.

지침은 API Gateway REST API 또는 WebSocket API 문제 해결을 위해 CloudWatch Logs를 활성화하려면 어떻게 해야 하나요?를 참조하세요.

Lambda와 통합된 API 게이트웨이 요청

API Gateway와 함께 AWS Lambda를 사용 중이고 높은 IntegrationLatency 지표가 표시되는 경우 Lambda 함수의 CloudWatch Logs를 검토하세요. Lambda 함수와 통합된 API 엔드포인트가 클라이언트에 응답을 보내는 데 너무 오래 걸리는 경우 긴 지연 시간을 해결해야 합니다. Lambda 함수의 콜드 스타트는 함수의 실행 시간 지표에 기록되지 않으므로 API의 통합 지연 시간이 함수의 기간보다 길어질 수 있습니다. 콜드 스타트 시 함수의 실행 소요 시간을 확인하기 위해 AWS X-Ray를 사용합니다.

자세한 내용은 How do I troubleshoot high latency in my API Gateway requests that are integrated with Lambda?(Lambda와 통합된 API Gateway 요청의 지연 시간이 긴 문제를 해결하려면 어떻게 해야 하나요?)를 참조하세요.

API Gateway가 CloudFront 엣지 로케이션에 응답하고 CloudFront가 클라이언트에 응답하는 데 걸리는 시간을 확인합니다.

API에 대한 요청 및 응답에 대한 총 시간(“time_total”)을 취한 후 다음을 뺍니다.

  • CloudFront에 클라이언트 HTTP 요청 보내기 연결 시작("time_pretransfer")
  • API Gateway가 요청을 처리하고 CloudFront 엣지 로케이션(API의 대기 시간 지표)에 응답하는 데 걸리는 시간

그 결과 API Gateway가 CloudFront 엣지 로케이션에 응답하고 CloudFront가 클라이언트에 응답하는 데 걸리는 시간을 알 수 있습니다.


관련 정보

HTTP API에 대한 지표 작업

Amazon API Gateway 측정기준 및 지표

CloudWatch 지표로 WebSocket API 실행 모니터링

Amazon API Gateway 로그를 문제 해결에 사용하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전