Lambda IteratorAge 지표가 증가하는 이유는 무엇이며, 이를 줄이려면 어떻게 해야 하나요?

4분 분량
0

AWS Lambda 함수의 IteratorAge 지표가 증가하거나 급증합니다.

간략한 설명

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

다음 요소는 함수의 IteratorAge 지표에 영향을 줍니다.

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

참고: Amazon DynamoDB 스트림의 경우, Amazon DynamoDB 스트림에 대한 Lambda IteratorAge 지표가 증가하는 이유는 무엇입니까? 페이지를 참조하세요.

해결 방법

함수의 런타임 기간 단축

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

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

1.    함수에 할당된 메모리 양을 늘립니다. Lambda는 메모리 크기에 비례하여 CPU 처리 능력을 할당합니다.

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

참고: Lambda 지속 시간 및 성능에 대한 자세한 내용은 AWS Lambda와 함께 AWS X-Ray 사용을 참조하세요.

스트림의 배치 크기 늘리기

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

함수의 배치 크기를 늘리려면 이벤트 소스로서 스트림 구성의 안내에 따릅니다.

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

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

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

함수가 오류를 반환하면 Lambda는 계속해서 배치를 재시도합니다. 배치 재시도는 처리가 성공하거나, 최대 재시도 횟수에 도달하거나, 스트림에서 데이터가 만료될 때까지 계속됩니다.

함수가 스트림에 기록된 레코드를 정상적으로 처리하는지 확인하세요. 함수를 개발할 때 코드를 로깅하고 계측하면 오류를 진단하는 데 도움이 될 수 있습니다.

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

스로틀 발생 관리

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

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

스트림에 레코드를 균등하게 분배하기

각 데이터 레코드의 파티션 키는 레코드가 쓰여지는 스트림의 샤드를 결정합니다. 동일한 파티션 키를 포함하는 레코드가 있는 스트림에 트래픽이 증가하면 균형이 맞지 않는 수의 레코드가 수신되는 샤드가 나옵니다. 그 결과 핫 샤드가 발생합니다.

Kinesis의 향상된 샤드 수준 지표를 사용하면 각 샤드에 대한 수집 속도를 확인하고, 핫 샤드 문제를 해결할 수 있습니다.

자세한 내용은 내부 정보: 키네시스 데이터 스트림 확장을 참조하세요.

스트림의 샤드 개수 늘리기

스트림의 샤드 개수가 적으면 함수의 반복기 수명이 늘어납니다. 스트림의 샤드 수를 늘리면 스트림에서 사용하는 동시 Lambda 함수의 수가 증가하여 함수의 반복기 수명이 감소합니다.

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

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

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

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

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

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

예를 들어, 동시 실행 수 = 샤드 수 x 샤드당 동시 배치 수(병렬화 계수)입니다.

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

참고: 샤드당 동시 배치 수를 늘릴 때 람다는 파티션 키 수준에서 순서 처리의 유효성을 검사합니다.

향상된 팬아웃 사용하기

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

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

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

관련 정보

Lambda 함수 작업의 모범 사례

Lambda 이벤트 소스 매핑

AWS Lambda 함수 크기 조정

리샤딩, 크기 조정 및 병렬 처리

데이터 스트림과 함수 구성

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음