AWS Lambda 함수와 통합된 Amazon API Gateway API에 요청을 보낼 때 응답 시간이 느립니다. 지연 속도가 높은 원인을 확인하고 싶습니다.
해결 방법
Lambda 함수와 통합된 API 엔드포인트가 클라이언트에 응답을 보내는 데 너무 오래 걸리는 경우 높은 지연 속도를 해결해야 합니다. API Gateway의 지표를 검토하여 요청/응답 흐름에서 높은 지연 속도를 유발하는 섹션을 식별합니다. 지연 속도가 높은 원인을 파악한 후 지연을 줄일 수 있습니다.
CloudWatch 지표를 필터링하여 API의 지연 속도 지표 검토
요청/응답 흐름에서 높은 지연 속도를 유발하는 섹션을 식별하려면 먼저 다음 단계를 수행하십시오.
- API에 요청을 보낸 후 클라이언트의 지연 속도를 관찰합니다.
- 전체 지연 속도를 기록한 후 Amazon CloudWatch 콘솔을 엽니다. 왼쪽 탐색 창에서 Metrics(지표)를 선택한 다음, All metrics(모든 지표)를 선택합니다. 지표 검색 상자에 APIGateway를 입력합니다. 검색 결과에서 API Gateway, ApiId를 선택합니다.
- API 목록에서 API ID 또는 API 이름을 사용하여 지정된 API를 필터링합니다. 필터링 후 IntegrationLatency 및 Latency 확인란을 선택합니다.
참고: API ID 및 API 이름은 API Gateway 콘솔에서 제공됩니다.
- Graphed metrics(그래프로 표시된 지표) 탭을 엽니다. Statistic(통계)에서 Maximum(최대)을 선택합니다. Period(기간)에서 1 minute(1분)을 선택합니다. 그래프 위에서 Custom(사용자 지정) 기간을 선택합니다. 클라이언트에서 높은 지연 속도가 발생한 기간을 선택합니다.
- IntegrationLatency와 Latency 지표를 모두 검토합니다. 이러한 지표의 값이 높을 때의 값과 타임스탬프를 기록합니다. 이 값이 높은 지연 속도의 원인을 설명할 수 있습니다.
지표를 비교하여 높은 지연 속도의 원인 파악
요청/응답 흐름과 관련된 지표를 계속 검토하여 높은 지연 속도의 원인을 찾습니다.
- API Gateway Latency 지표와 클라이언트에서 관찰한 전체 지연 속도 값과 비교합니다.
예를 들어 API의 Latency 지표에서 Maximum(최대) 값이 클라이언트의 Max Latency(최대 지연 속도) 값과 거의 동일합니다. 이러한 값은 요청/응답 흐름의 최대 지연이 API Gateway에서 요청을 처리하는 데 걸리는 시간임을 나타냅니다. API Gateway 처리 시간에는 Lambda에 요청을 보내고, Lambda의 응답을 기다리고, 클라이언트에 응답을 보내는 데 걸리는 시간이 포함됩니다.
- IntegrationLatency 지표와 API의 Latency 지표를 비교합니다.
예를 들어 IntegrationLatency 지표가 Latency 지표와 거의 동일합니다. 이러한 값은 API의 지연 속도가 주로 Lambda로 전송된 백엔드 요청으로 인해 발생하고 응답하는 데 시간이 더 오래 걸린다는 것을 나타냅니다. IntegrationLatency 지표에는 API Gateway가 요청을 보내고 API Gateway가 백엔드로부터 응답을 받기까지의 시간이 포함됩니다.
- API의 Latency 지표와 비교할 때 IntegrationLatency 지표가 낮으면 백엔드 응답 시간이 짧은 것입니다. 이 경우 API 요청 또는 응답을 처리하는 시간이 더 깁니다.
예를 들어 API에 구성된 매핑 템플릿 또는 API Gateway Lambda 권한 부여자 모두 지연을 일으킬 수 있습니다.
- API의 Latency 지표가 클라이언트에서 관찰한 지연 속도보다 훨씬 낮으면 경로가 지연의 원인일 수 있습니다. 클라이언트와 API Gateway 간의 경로를 검토하여 지연을 가중시키는 중간 엔드포인트가 있는지 확인합니다.
예를 들어 프라이빗 VPN 연결 또는 프록시로 인해 지연이 발생할 수 있습니다.
Lambda 지표를 확인하여 IntegrationLatency가 높은 원인 파악
마지막으로 요청/응답 흐름과 관련된 Lambda 지표에 초점을 맞춰 IntegrationLatency가 높은 원인을 찾습니다.
- Lambda 함수 Duration 지표를 확인하여 Lambda 함수의 실행 시간이 더 긴지 여부를 확인합니다. Lambda 함수의 실행 시간이 증가한 경우 CloudWatch 로그를 검토하여 높은 지연 속도를 유발하는 코드 섹션을 찾습니다. 기본적으로 Lambda 함수는 CloudWatch 로그에 START, END 및 REPORT 문을 기록합니다. Lambda 함수 코드의 각 논리적 섹션에 사용자 지정 로그 문을 추가하여 자세한 CloudWatch 로그를 가져올 수 있습니다.
- 클라이언트의 지연 속도가 높은 기간 동안 Duration 지표가 변경되지 않았다면 초기화 시간이 증가했는지 확인합니다. Lambda 함수의 초기화 시간은 요청을 처리하기 위한 실행 환경을 설정하는 데 걸리는 시간입니다. API Gateway에서 오는 요청을 처리하기 위해 새 환경이 필요할 수 있습니다. 이 환경은 Lambda를 통해 설정됩니다. 일반적으로 Lambda 함수 핸들러 외부에 있는 코드는 초기화 시간 도중 실행됩니다. 코드를 완료하는 데 시간이 더 오래 걸리면 클라이언트에 대한 전체 응답 시간이 지연될 수 있습니다.
참고: 초기화 시간을 INIT 또는 콜드 스타트라고 합니다.
- Lambda 함수 로그의 report 문을 확인하여 초기화 시간의 Duration이 증가했는지 확인합니다. 일부 요청의 초기화 시간이 길면 API Gateway의 IntegrationLatency 지표가 증가할 수 있습니다.
관련 정보
HTTP API 지표 사용
Amazon API Gateway 차원 및 지표
CloudWatch 지표로 WebSocket API 실행 모니터링
CloudWatch 콘솔에서 지표 보기
Lambda 런타임 환경 수명 주기