Amazon SQS 이벤트 소스를 사용하는 Lambda 함수가 최적으로 확장되지 않는 이유는 무엇입니까?

3분 분량
0

내 Amazon Simple Queue Service(Amazon SQS) 대기열 이벤트 소스의 AWS Lambda 함수가 예상대로 확장되지 않습니다. 최적의 동시성을 구성하고 싶습니다.

해결 방법

참고: Amazon SQS 대기열을 이벤트 소스로 구성하는 경우, Lambda 함수는 분당 최대 300개의 인스턴스까지 최적으로 확장할 수 있습니다. 표준 대기열의 최대 동시 실행 수는 1,250개입니다. 선입선출(FIFO) 이벤트 소스 매핑을 사용하는 경우, 함수는 활성 메시지 그룹의 수에 따라 동시성을 확장할 수 있습니다.

Lambda 함수 호출 문제 확인 및 해결

대규모 오류를 방지하기 위해, 호출 문제가 발생하면 Lambda에서 함수 확장을 제한합니다. 문제가 해결된 후에 Lambda는 함수를 계속 확장합니다. 자세한 내용은 실패한 호출 백오프 전략을 참고하십시오. Lambda 함수 호출 오류를 해결하려면 Lambda의 SQS 이벤트 소스에 대한 오류 처리Lambda 함수 오류 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

최적의 동시성으로 Lambda 함수 구성

예약된 동시성

함수에 예약된 동시성을 구성한 경우, 함수가 예약된 값에 도달하면 Lambda가 함수를 제한합니다. 이벤트 소스 매핑에는 예약된 동시성이 포함되지 않으므로 대기열에 있는 메시지를 함수로 보내는 것보다 더 많이 처리할 수 있습니다.

함수의 최소 예약 동시성은 표준 SQS 대기열의 경우 1,250개여야 하며 FIFO 대기열의 총 활성 메시지 그룹과 같아야 합니다. 예약된 동시성을 FIFO 대기열의 메시지 그룹 수보다 높게 설정하는 것이 모범 사례입니다. 예약된 동시성이 이보다 낮으면 FIFO 대기열에서 처리가 지연되어 함수가 제한될 수 있습니다.

중요: 동시 호출 수를 제한하려면 예약된 동시성 대신 Amazon SQS 이벤트 소스의 최대 동시성 설정을 사용하십시오.

기본 동시성

AWS 계정의 기본 동시성 할당량은 동일한 계정 및 AWS 리전의 모든 함수에 대해 1,000입니다. 함수는 사용 가능한 최대 동시성에 도달할 때까지 확장됩니다. 모든 함수가 1,000개의 동시성 풀을 사용하는 경우 Lambda는 호출을 제한합니다.

Lambda는 트래픽이 갑자기 급증해도 함수가 과도하게 확장되지 않도록 함수를 확장할 수 있는 속도를 제한합니다. Lambda 함수는 처음에는 동시성 확장 속도를 기반으로 확장합니다. 동시성 확장 속도는 함수 수준에서 정해지므로 계정의 각 함수는 다른 함수와 독립적으로 확장할 수 있습니다. 또한 동시성 확장 속도는 함수에 사용할 수 있는 동시성의 총량을 결정하는 계정 수준의 동시성 할당량과도 다릅니다.

참고: 기본 동시성은 프로비전된 동시성과 다릅니다. 자세한 내용은 예약된 동시성과 프로비전된 동시성 이해를 참조하십시오.

최대 동시성 설정

하나의 이벤트 소스에 최대 동시성을 설정하면 이 값은 특정 이벤트 소스에만 적용됩니다. 최대 동시성이 없는 추가 이벤트 소스는 남은 계정의 동시성 할당량이나 예약된 동시성을 사용하게 됩니다.

최대 동시성 설정과 예약된 동시성을 함께 사용할 수 있습니다. 최대 동시성을 함수의 예약된 동시성보다 낮게 설정하여 함수가 제한되지 않도록 하는 것이 모범 사례입니다.

Amazon SQS 대기열에 Lambda 함수를 확장할 수 있을 만큼 충분한 메시지가 있는지 확인

Lambda 함수를 호출하도록 Amazon SQS 대기열을 구성한 경우, Lambda는 대기열에 메시지가 있는 경우에만 호출을 확장합니다.

Amazon CloudWatch를 사용하여 대기열에 있는 처리해야 할 메시지 수를 확인하려면 대기열의 ApproximateNumberOfMessagesVisible 지표를 검토하십시오.

지표가 낮거나 0이면 함수를 확장할 수 없습니다.

지표가 높고 호출 문제가 없는 경우 기간 지표가 급증하지 않을 때까지 이벤트 알림의 배치 크기를 늘리십시오. Lambda의 지표에 대한 자세한 내용은 지표 유형을 참조하십시오.

참고: 표준 Amazon SQS 대기열의 최대 배치 크기는 레코드 10,000개입니다. FIFO 대기열의 경우 최대 배치 크기는 레코드 10개입니다.

Amazon SQS가 메시지를 대기열에 추가하고 있는지 확인

Amazon SQS가 새 메시지를 대기열에 추가하고 있는지 확인하려면 대기열의 NumberOfMessagesSent 지표를 검토하십시오.

소비자가 ReceiveMessage API 호출을 하고 있는지 확인

소비자가 ReceiveMessage API 호출을 하고 있는지 확인하려면 대기열의 NumberOfMessagesReceived 지표를 검토하십시오.

참고: NumberOfEmptyReceives 지표가 급증하면 소비자가 ReceiveMessage API를 호출하고 있지만 호출이 대기열의 메시지를 반환하지 않는 것입니다. 이 문제는 대기열에 메시지가 없을 때 발생합니다.

관련 정보

Amazon SQS에서 Lambda 사용

AWS Lambda 함수 동시성 관리

AWS 공식
AWS 공식업데이트됨 3달 전