Lambda IteratorAge 지표가 증가하는 이유는 무엇이며 줄이려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 6월 9일

AWS Lambda 함수의 IteratorAge 지표가 증가하거나 급증합니다. 함수의 반복기 수명이 증가하는 이유는 무엇이며 줄이려면 어떻게 해야 합니까?

간략한 설명

함수가 함수를 호출하는 스트림에 기록된 데이터를 효율적으로 처리할 수 없는 경우 Lambda 함수의 반복기 수명이 증가합니다. 함수의 IteratorAge 지표를 줄이려면 스트림 처리 처리량을 늘려야 합니다.

함수의 IteratorAge 지표에 영향을 미치는 요인은 다음과 같습니다.

이 문서를 검토하여 각 요소가 반복기 수명에 미치는 영향을 파악합니다. 그런 다음 데이터 스트림 또는 함수를 재구성하여 사용 사례에 따라 함수의 반복기 수명을 줄입니다. 자세한 내용은 AWS Lambda 함수 지표를 사용한 작업을 참조하세요.

해결 방법

함수의 런타임 기간 단축

런타임 기간이 길어지면 함수의 반복기 수명이 길어집니다. 기간을 줄이면 함수의 처리량이 증가하여 함수의 반복기 수명이 감소합니다.

함수의 런타임 기간을 줄이려면 다음 중 하나 또는 둘 다를 수행합니다.

1.    함수에 할당된 메모리 양을 늘립니다.

2.    레코드를 처리하는 데 필요한 시간을 줄일 수 있도록 함수 코드를 최적화합니다.

참고: 자세한 내용은 AWS Lambda 및 AWS X-RayAWS Lambda 함수 계측을 참조하세요.

스트림의 샤드 개수 늘리기

스트림의 샤드 수가 적으면 함수의 반복기 수명이 늘어납니다. 스트림의 샤드 수를 늘리면 함수의 처리량이 증가하여 함수의 반복기 수명이 감소합니다.

스트림의 샤드 수를 늘리려면 스트림 리샤딩 지침을 따릅니다.

참고: 샤드 분할은 함수의 반복기 수명에 즉각적인 영향을 미치지 않습니다. 기존 레코드는 작성된 샤드에 남아 있습니다. 이러한 샤드는 샤드의 반복기 수명이 줄어들기 전에 백로그를 따라 잡아야 합니다. 자세한 내용은 스트림 작업을 참조하세요.

스트림의 배치 크기 늘리기

함수의 런타임 기간이 이벤트의 레코드 수와 독립적인 경우 함수의 배치 크기를 늘리면 함수의 반복기 수명이 줄어듭니다.

함수의 배치 크기를 늘리려면 스트림을 이벤트 소스로 구성 지침을 따릅니다.

참고: 함수의 기간이 이벤트의 레코드 수에 따라 달라지는 경우 함수의 배치 크기를 늘려도 함수의 반복기 수명이 감소하지 않습니다. 자세한 내용은 스트림 작업을 참조하세요.

함수가 호출 오류를 정상적으로 처리하는지 확인

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

따라서 함수가 스트림에 기록되는 레코드를 정상적으로 처리하는 것이 중요합니다. 함수를 개발할 때 코드를 로깅하고 구성하면 오류를 진단하는 데 도움이 될 수 있습니다.

자세한 내용은 다음을 참조하세요.

스로틀 발생 관리

이벤트 레코드는 순차적으로 읽히기 때문에 현재 호출이 제한되는 경우 함수는 이후 레코드로 진행할 수 없습니다. 이 경우 Lambda가 제한된 호출을 재시도하는 동안 반복기 수명이 늘어납니다.

Lambda 함수의 제한을 관리하려면 동시성 증가를 요청하거나 함수의 성능 문제를 검토합니다.

다양한 병렬화 계수 설정을 테스트하고 향상된 팬아웃을 사용하여 스트림 처리 처리량 향상

병렬화 계수 설정 테스트하기

함수의 병렬화 계수를 구성하여 스트림의 각 샤드에 대한 동시 Lambda 호출 수를 늘리면 스트림 처리를 개선할 수 있습니다. 또한 Lambda가 각 샤드에서 폴링하는 동시 배치의 수를 지정할 수도 있습니다.

예를 들어 병렬화 계수가 10으로 설정된 경우 최대 50개의 동시 Lambda 호출을 통해 5개의 Kinesis 데이터 샤드를 처리할 수 있습니다.

자세한 내용은 Amazon Kinesis를 통한 AWS Lambda 사용Kinesis 및 Amazon DynamoDB 이벤트 소스에 대한 새로운 AWS Lambda 확장 제어를 참조하세요.

참고: 샤드당 동시 배치 수를 늘리면 Lambda는 파티션 키 수준에서 순차적 처리를 관리합니다.

향상된 팬아웃 사용하기

향상된 팬아웃으로 데이터 스트림 소비자를 생성하여 지연 시간을 줄이고 읽기 처리량을 높일 수 있습니다. 스트림 소비자는 각 샤드에 대한 전용 연결을 가지므로 스트림에서 읽는 다른 애플리케이션에는 영향을 주지 않습니다.

자세한 내용은 전용 처리량을 사용한 사용자 지정 소비자 개발(향상된 팬아웃)Amazon Kinesis를 통한 AWS Lambda 사용을 참조하세요.

참고: 동일한 데이터를 읽는 애플리케이션이 많거나 대규모 레코드가 있는 스트림을 재처리하는 경우 향상된 팬아웃을 사용하는 것이 좋습니다.