Amazon SQS 이벤트 소스에서 Lambda 함수의 규모 조정이 최적화되지 않은 이유는 무엇인가요?

3분 분량
0

Amazon Simple Queue Service(Amazon SQS) 대기열을 이벤트 소스에서 AWS Lambda 함수의 동시성을 최적화하고 싶습니다.

해결 방법

참고: Amazon SQS 대기열을 이벤트 소스로 구성하는 경우, Lambda 함수는 분당 최대 300개의 인스턴스까지 최적으로 확장할 수 있습니다. 표준 대기열의 경우 최대 동시 호출 수가 1,000개입니다. FIFO 이벤트 소스 매핑을 사용하는 경우, 함수는 활성 메시지 그룹의 수에 따라 동시성을 스케일 인할 수 있습니다. 자세한 내용은 확장 및 처리를 참고하세요.

Lambda 함수 호출 오류 파악 및 해결

대규모 오류를 방지하기 위해 간접 호출 오류가 발생할 때 Lambda에서 함수 규모 조정을 제한합니다. 오류가 해결되면 Lambda에서 계속해서 함수 규모를 조정합니다. 자세한 내용은 실패한 간접 호출 백오프 전략을 참고하세요. Lambda 함수 호출 오류를 해결과 관련한 모범 사례는 Lambda의 문제 해결Lambda 함수 오류를 해결하려면 어떻게 하나요?를 참고하세요.

사용 사례에 맞는 최적의 동시성으로 Lambda 함수 구성

예약된 동시성

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

함수에 예약된 동시성의 최소값은 다음과 같아야 합니다.

  • 표준 Amazon SQS 대기열의 경우: 1,000
  • FIFO 대기열의 경우: 활성 메시지 그룹의 수

예약된 동시성을 FIFO 대기열의 메시지 그룹 수보다 적게 설정하는 것을 권고하지 않습니다. 예약된 동시성이 낮으면 FIFO 대기열 처리가 지연되고 함수에 병목 현상이 발생할 수 있습니다.

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

예약되지 않은 동시성

함수에 예약된 동시성을 구성하지 않으면 함수의 예약되지 않은 동시성 할당량은 기본값인 1,000으로 설정됩니다. 이 기본 할당량은 같은 AWS 계정 및 AWS 리전에 있는 다른 함수에도 적용됩니다. 함수 리전에서 사용 가능하며 예약되지 않은 동시성이 1,000개 이상인 경우, 함수가 사용 가능한 최대값에 도달할 때까지 확장됩니다. 계정의 동시성이 모두 사용 중이면 Lambda가 호출을 제한합니다.

참고: Lambda 함수에서는 처음에는 동시성 규모 조정 속도를 기반으로 규모를 조정합니다.

트래픽 급증으로 인해 과도한 확장을 방지하기 위해 Lambda에는 함수 규모 조정 속도 제한이 있습니다. 동시성 규모 조정 속도는 요청 증가에 기반하여 계정 내에서 증가할 수 있는 속도를 정의합니다.

중요: 동시성 규모 조정 속도는 함수 수준의 제한 값입니다. 계정의 각 함수를 다른 함수와 독립적으로 확장할 수 있습니다. 또한 함수에서 사용할 수 있는 총 동시성의 총량이 계정에 따라 다르기 때문에 계정 수준에 따라 동시성 규모 조정 속도가 다릅니다.

최대 동시성 설정

최대 동시성을 설정하면 Lambda 함수의 최대 동시 실행 수가 설정된 값을 초과하지 않도록 제한합니다. 이벤트 소스 하나에 최대 동시성을 설정하면 특정 이벤트 소스에만 해당 값이 적용됩니다. 최대 동시성이 적용되지 않은 추가 이벤트 소스의 경우 계정에 남은 동시성 할당량이나 예약된 동시성을 사용하게 됩니다.

최대 동시성 설정과 예약된 동시성을 함께 사용할 수 있습니다. 최대 동시성 설정 값을 함수의 예약된 동시성보다 낮게 설정하는 것이 좋습니다. 높을 경우 병목 현상이 발생할 수 있기 때문입니다.

Amazon SQS 대기열에 Lambda 함수의 규모를 조정할 수 있을 만큼 충분한 메시지가 있는지 확인합니다.

Amazon SQS 대기열이 Lambda 함수를 간접 호출하도록 구성된 경우, Lambda에서는 대기열에 메시지가 있는 경우에만 호출 규모를 조정합니다.

Amazon SQS 대기열에서 처리해야 하는 메시지 수를 확인하려면, ApproximateNumberOfMessagesVisible 지표를 검토하세요.

지표가 낮거나 0인 경우 함수 규모를 조정할 수 없습니다.

지표가 높고 간접 호출 오류가 없는 경우, 이벤트 알림에서 배치 크기를 늘려 보세요. 기간 지표가 배치 크기 지표보다 빠르게 증가할 때까지 배치 크기를 늘립니다. 자세한 내용은 Lambda 콘솔에서 함수 모니터링을 참고하세요.

참고: 표준 Amazon SQS 대기열의 최대 배치 크기는 레코드 10,000개입니다. FIFO 대기열의 경우 최대 배치 크기는 레코드 10개입니다. 자세한 내용은 ReceiveMessage을 참고하세요.

관련 정보

Amazon SQS에서 Lambda 사용

AWS Lambda 함수 동시성 관리

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