내용으로 건너뛰기

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

4분 분량
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 이벤트 소스 매핑과 함께 프로비저닝된 모드 사용

워크로드에 프로비저닝된 모드를 사용하여 이벤트 소스 매핑의 처리량을 미세 조정하고 이벤트 폴러의 한계를 정의합니다. 프로비저닝된 모드로 구성된 Amazon SQS 이벤트 소스 매핑은 기본 Amazon SQS 이벤트 소스 매핑 기능보다 규모 조정 속도가 3배 더 빠르고 동시성은 16배 더 높습니다.

엄격한 성능 요구 사항이 있는 SQS 이벤트 기반 워크로드에는 프로비저닝된 모드를 사용하는 것이 가장 좋습니다. 예를 들면 시장 데이터 피드를 처리하는 금융 서비스 회사와 실시간 맞춤형 추천을 제공하는 전자상거래 플랫폼이 있습니다.

자세한 내용은 프로비저닝된 모드를 통해 SQS 이벤트 소스 매핑의 이벤트 처리를 개선하는 AWS Lambda를 참조하십시오.

참고: 프로비저닝된 모드에서는 추가 비용이 발생합니다. 자세한 내용은 AWS Lambda 요금을 참조하십시오.

관련 정보

Amazon SQS에서 Lambda 사용

AWS Lambda 함수 동시성 관리

AWS 공식업데이트됨 7달 전
1 댓글

This article was reviewed and updated on 2026-02-05.

전문가

답글을 게시함 2달 전