Lambda IteratorAge 지표가 증가하는 이유는 무엇입니까?

최종 업데이트 날짜: 2019년 8월 5일

AWS Lambda 함수의 IteratorAge 지표가 증가하거나 급등합니다. 이 현상이 발생하는 이유는 무엇이고 어떻게 처리해야 합니까?

간략한 설명

스트림 기반 호출에서 Lambda는 IteratorAge 지표를 내보냅니다. 반복기 수명은 배치의 마지막 레코드가 기록된 후 Lambda가 레코드를 읽기까지의 시간입니다. 반복기 수명은 Lambda 함수 실행 기간, 샤드 수 및 배치 크기 같은 다른 파라미터에 따라 다릅니다. 자세한 내용은 AWS Lambda CloudWatch 지표를 참조하십시오.

일반적으로 반복기 수명은 함수가 스트림에 기록되는 데이터의 양을 처리할 수 없을 때 증가합니다.

해결 방법

이러한 각 Lambda 함수 파라미터와 사용 사례가 반복기 수명에 미치는 영향을 검토합니다. 그런 다음 반복기 수명을 줄이도록 함수를 다시 구성합니다.

기간

Lambda 함수의 실행 기간이 길면 반복기 수명이 높아질 수 있습니다. 이 기간은 레코드 배치를 처리하는 데 소요되는 시간입니다. 기간을 줄이면 처리량이 증가하고 이어서 반복기 수명이 줄어듭니다.

함수의 기간을 줄이려면 다음을 수행합니다.

  • 함수에 할당된 메모리 양 늘리기. 이렇게 하면 함수가 레코드를 더 빠르게 처리할 수 있으므로 반복기 수명이 줄어듭니다.
  • 함수 코드를 최적화(예: 병렬 호출 사용, 비동기식 메서드 사용 등)하여 레코드 처리 시간 줄이기.

AWS X-Ray도 함수 기간을 최적화하는 데 도움이 됩니다. 자세한 내용은 AWS Lambda 및 AWS X-RayAWS Lambda 함수 구성을 참조하십시오.

샤드 개수

모범 사례에 따라 레코드가 고르게 분산되어 있다는 가정 하에 스트림의 샤드 수를 늘리면 반복기 수명이 줄어듭니다. 스트림의 샤드 수는 Lambda 함수의 최대 동시성에 해당하기 때문입니다. 기본적으로 샤드가 많으면 동시성이 높다는 것을 의미하므로 처리량이 증가합니다. 자세한 내용은 스트림 이벤트 호출을 참조하십시오.

참고: 샤드 분할은 반복기 수명에 즉각적인 영향을 미치지 않습니다. 기존 레코드는 레코드가 기록되는 샤드에 유지되며 이러한 샤드의 반복기 수명은 샤드가 백로그를 따라잡은 후에 줄어듭니다.

배치 크기

Lambda 함수의 작동 방식에 따라 배치 크기를 변경하면 반복기 수명이 줄어들 수 있습니다.

예를 들어 함수의 기간이 이벤트의 레코드 수와 대부분 독립적인 경우(예: 배치에서 다운스트림 호출이 발생하는 경우) 배치 크기를 늘리면 처리량이 증가하고 반복기 수명이 줄어듭니다.

그러나 함수의 기간은 이벤트의 레코드 수에 크게 종속될 수 있습니다. 각 레코드가 동기식 다운스트림 호출을 트리거하는 경우가 그 예입니다. 이 경우에는 배치 크기를 조정해도 반복기 수명이 실질적으로 줄어들지 않을 수 있습니다.

자세한 내용은 스트림 이벤트 호출을 참조하십시오.

오류

호출 오류가 발생하면 Lambda 함수가 이벤트를 처리하거나 동일한 이벤트를 반복적으로 처리하는 데 소요되는 시간이 길어질 수 있습니다. 이벤트 레코드는 순차적으로 읽히므로 재시도할 때마다 레코드 배치에서 오류가 발생하면 함수가 이후 레코드로 진행하지 못합니다. 이러한 경우 반복기 수명은 레코드 수명에 따라 선형으로 증가합니다.

따라서 함수가 스트림에 기록되는 레코드를 정상적으로 처리하는 것이 중요합니다. 함수를 개발할 때 코드를 로깅하고 구성하면 오류를 진단하는 데 도움이 될 수 있습니다. 자세한 내용은 Lambda 애플리케이션 모니터링 및 문제 해결AWS Lambda 함수 구성을 참조하십시오.