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를 필터링합니다. 필터링 후 IntegrationLatencyLatency 확인란을 선택합니다.
    참고: API ID 및 API 이름은 API Gateway 콘솔에서 제공됩니다.
  4. Graphed metrics(그래프로 표시된 지표) 탭을 엽니다. Statistic(통계)에서 Maximum(최대)을 선택합니다. Period(기간)에서 1 minute(1분)을 선택합니다. 그래프 위에서 Custom(사용자 지정) 기간을 선택합니다. 클라이언트에서 높은 지연 속도가 발생한 기간을 선택합니다.
  5. IntegrationLatency와 Latency 지표를 모두 검토합니다. 이러한 지표의 값이 높을 때의 값과 타임스탬프를 기록합니다. 이 값이 높은 지연 속도의 원인을 설명할 수 있습니다.

지표를 비교하여 높은 지연 속도의 원인 파악

요청/응답 흐름과 관련된 지표를 계속 검토하여 높은 지연 속도의 원인을 찾습니다.

  1. API Gateway Latency 지표와 클라이언트에서 관찰한 전체 지연 속도 값과 비교합니다.
    예를 들어 API의 Latency 지표에서 Maximum(최대) 값이 클라이언트의 Max 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 연결 또는 프록시로 인해 지연이 발생할 수 있습니다.

Lambda 지표를 확인하여 IntegrationLatency가 높은 원인 파악

마지막으로 요청/응답 흐름과 관련된 Lambda 지표에 초점을 맞춰 IntegrationLatency가 높은 원인을 찾습니다.

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

관련 정보

HTTP API 지표 사용

Amazon API Gateway 차원 및 지표

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

CloudWatch 콘솔에서 지표 보기

Lambda 런타임 환경 수명 주기