Lambda와 통합된 내 API Gateway 요청에서 지연 시간이 긴 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Lambda 함수와 통합된 Amazon API Gateway API에 요청할 때 응답 시간이 느립니다. 지연 시간이 긴 원인을 어떻게 확인하나요?

해결 방법

Lambda 함수와 통합된 API 엔드포인트가 클라이언트에 응답을 보내는 데 너무 오래 걸리는 경우 높은 대기 시간을 해결해야 합니다. API Gateway에 대한 지표를 검토하여 긴 지연 시간을 유발하는 요청/응답 흐름 섹션을 식별합니다. 지연 시간이 긴 원인을 파악한 후 지연을 줄이기 위해 작업할 수 있습니다.

CloudWatch 지표를 필터링하여 API에서 지연 시간 지표 검토

긴 지연 시간을 초래하는 요청/응답 흐름 섹션을 식별하려면 먼저 다음 단계를 수행하세요.

  1. API에 요청을 보낸 후 클라이언트의 지연 시간을 관찰하세요.
  2. 전체 지연 시간을 확인한 후 Amazon CloudWatch 콘솔을 엽니다. 왼쪽 탐색 창에서 지표(Metrics), **모든 지표(All metrics)**를 선택합니다. 메트릭 검색 상자에 APIGateway를 입력합니다. 검색 결과에서 API Gateway, ApiId를 선택합니다.
  3. API 목록에서 API ID 또는 API 이름을 사용하여 지정된 API를 필터링합니다. 필터링 후 IntegrationLatency지연 시간(Latency) 확인란을 선택합니다.
    참고: API ID와 API 이름은 API Gateway 콘솔에서 확인할 수 있습니다.
  4. 그래프로 표시된 지표(Graphed metrics) 탭을 엽니다. **통계(Statistic)**에서 **최대(Maximum)**를 선택합니다. **기간(Period)**에 대해 **1분(1 minute)**을 선택합니다. 그래프 위에서 사용자 지정(Custom) 기간을 선택합니다. 클라이언트가 긴 지연 시간을 경험한 기간을 선택합니다.
  5. IntegrationLatency 및 Latency 지표를 모두 검토합니다. 이러한 지표의 값이 높을 때 값과 타임스탬프를 확인하세요. 이 값은 지연 시간이 긴 원인을 설명할 수 있습니다.

지연 시간이 긴 원인을 식별하기 위해 지표를 비교합니다.

요청/응답 흐름과 관련된 메트릭을 계속 검토하여 높은 지연 시간의 원인을 찾습니다.

  1. API Gateway 지연 시간(Latency) 지표를 클라이언트에서 관찰된 전체 지연 시간 값과 비교합니다.
    예를 들어 API에는 최대(Maximum) 값이 클라이언트의 최대 지연 시간(Max Latency) 값과 거의 같은 지연 시간(Latency) 지표가 있습니다. 이러한 값은 요청/응답 흐름의 최대 지연이 API Gateway에서 요청을 처리하는 데 걸리는 시간임을 나타냅니다. API Gateway 처리 시간에는 Lambda에 요청을 보내고, Lambda로부터 응답을 기다리고, 클라이언트에 응답을 보내는 데 걸리는 시간이 포함됩니다.
  2. IntegrationLatency 지표를 API의 지연 시간(Latency) 지표와 비교합니다.
    예를 들어 IntegrationLatency 지표는 지연 시간(Latency) 지표와 거의 같습니다. 이러한 값은 API의 지연 시간이 주로 응답하는 데 더 오래 걸리는 Lambda로 전송된 백엔드 요청으로 인해 발생함을 나타냅니다. IntegrationLatency 지표에는 요청을 보내는 API Gateway와 백엔드에서 응답을 받는 API Gateway 사이의 시간이 포함됩니다.
  3. API의 지연 시간(Latency) 지표와 비교할 때 IntegrationLatency 지표가 낮으면 백엔드 응답 시간이 낮습니다. 이 시나리오에서는 API 요청 또는 응답을 처리하는 데 더 오래 걸립니다.
    예를 들어 API 또는 API Gateway Lambda 권한 부여자에 구성된 매핑 템플릿은 모두 지연을 일으킬 수 있습니다.
  4. API에 대한 지연 시간(Latency) 지표가 클라이언트에서 관찰된 지연 시간보다 훨씬 낮으면 경로로 인해 지연이 발생할 수 있습니다. 클라이언트와 API GATEWAY 간의 경로를 검토하여 지연을 추가하는 중간 엔드포인트가 있는지 확인합니다.
    예를 들어 프라이빗 VPN 연결 또는 프록시로 인해 지연이 발생할 수 있습니다.

높은 IntegrationLatency의 원인을 식별하기 위해 Lambda 지표 보기

마지막으로 요청/응답 흐름과 관련된 Lambda 지표에 집중하여 IntegrationLatency가 높은 원인을 찾습니다.

  1. Lambda 함수 지속 시간(Duration) 지표를 확인하여 Lambda 함수의 실행 시간이 더 긴지 확인합니다. Lambda 함수의 실행 시간이 늘어난 경우 CloudWatch 로그를 검토하여 높은 지연 시간을 유발하는 코드 섹션을 찾으세요. 기본적으로 Lambda 함수는 CloudWatch 로그에 START, END 및 REPORT 문을 기록합니다. 자세한 CloudWatch 로그를 얻으려면 Lambda 함수 코드의 각 논리적 섹션에 사용자 지정 로그 문을 추가하세요.
  2. 클라이언트에서 긴 지연 시간 동안 지속 시간(Duration) 지표가 변경되지 않은 경우 초기화 시간이 증가했는지 확인합니다. Lambda 함수의 초기화 시간은 요청을 처리하기 위해 실행 환경을 설정하는 데 걸리는 시간입니다. API Gateway에서 오는 요청에는 처리를 위한 새로운 환경이 필요할 수 있습니다. 이는 Lambda를 통해 설정됩니다. 일반적으로 Lambda 함수 핸들러 외부에 있는 코드는 초기화 시간 동안 실행됩니다. 완료하는 데 시간이 오래 걸리는 코드는 클라이언트에 대한 전체 응답 시간을 지연시킬 수 있습니다.
    참고: 초기화 시간은 INIT 또는 콜드 스타트라고 합니다.
  3. Lambda 함수 로그에서 보고서 문을 확인하여 초기화 시간의 **지속 시간(Duration)**이 증가했는지 확인합니다. 일부 요청의 초기화 시간이 길면 API Gateway에 대한 IntegrationLatency 지표가 증가할 수 있습니다.

관련 정보

HTTP API에 대한 지표 작업

Amazon API Gateway 차원 및 지표

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

CloudWatch 콘솔에서 지표 보기

Lambda 실행 환경 수명 주기