내 Amazon SQS 대기열에서 메시지 백로그가 증가하는 것을 방지하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 8월 26일

Amazon Simple Queue Service(Amazon SQS) 대기열의 메시지 백로그가 증가하고 있습니다. 백로그가 증가하는 이유는 무엇이며 어떻게 백로그가 증가하지 못하게 방지할 수 있습니까?

간략한 설명

표준 및 FIFO SQS 대기열

다음과 같은 상황에서 메시지 백로그가 증가합니다.

  • 생산자가 메시지의 소비 속도보다 빠른 속도로 메시지를 보냅니다.
  • 소비자가 가시성 시간 제한 내에 메시지를 삭제하지 않습니다. SQS 대기열이 폴링되면 메시지가 대기열에 다시 나타납니다.

FIFO SQS 대기열

FIFO(선입선출) SQS 대기열의 경우 다음과 같은 이유에 의해서도 메시지 백로그가 증가할 수 있습니다.

  • FIFO 대기열 20,000 메시지 버퍼 제한.
  • 특정 메시지 그룹에 속한 메시지가 특정 소비자에게 걸려 있어서 동일한 메시지 그룹의 다른 메시지가 처리되지 않음.

해결 방법

메시지 백로그가 증가하지 않도록 방지하려면 다음 모범 사례를 따르세요.

표준 및 FIFO SQS 대기열

  • SQS 대기열 최적 가시성 시간 제한을 설정하여 소비자가 가시성 시간 제한 기간 내에 메시지를 처리한 후 메시지를 삭제할 수 있도록 합니다. 메시지를 처리하는 데 걸리는 시간을 모르는 경우 소비자 프로세스에 대한 하트비트를 만듭니다. 초기 가시성 시간 제한(예: 2분)을 지정합니다. 그런 다음 소비자가 메시지를 처리하는 데 더 많은 시간이 필요한 경우 ChangeMessageVisibility API 호출을 통해 가시성 시간 제한을 계속 늘립니다.
  • ReceiveMessage API 호출을 할 때 배치 크기를 늘립니다. MaxNumberOfMessages 파라미터 값을 1보다 크게 설정합니다(최대 10).
  • SQS 대기열 지표의 대략적인 표시 메시지 수를 모니터링합니다. 이 지표를 사용하면 소비자가 메시지를 소비할 수 있는 것보다 더 빠른 속도로 생산자가 메시지를 생성하기 시작하는지 확인할 수 있습니다. 수평으로 확장하려면 SQS 대기열을 소비하는 소비자 또는 클라이언트 수를 늘리거나 대기열을 폴링하는 스레드 수를 늘립니다.

FIFO SQS 대기열

20,000개의 메시지 버퍼

FIFO 대기열은 최대 20,000개의 이동 중인 메시지를 허용합니다. 이동 중인 메시지에는 소비자가 대기열에서 수신했지만 대기열에서 아직 삭제되지 않은 메시지가 포함됩니다. 20,000개의 할당량에 도달하면 Amazon SQS가 오류 메시지를 반환하지 않습니다. FIFO 대기열은 처음 20,000개의 메시지를 살펴보고 사용 가능한 메시지 그룹을 결정합니다. 단일 메시지 그룹에 메시지 백로그가 있는 경우 백로그에서 메시지를 성공적으로 소비할 때까지 다른 메시지 그룹의 메시지를 소비할 수 없습니다.

메시지 그룹에 대한 크기 조정

동일한 메시지 그룹에 속하는 메시지는 해당 메시지 그룹에 상대적인 순서로 하나씩 처리됩니다. 메시지 그룹 ID가 여러 개인 메시지를 수신할 때 Amazon SQS는 먼저 메시지 그룹 ID가 동일한 메시지를 최대한 많이 반환하려고 시도합니다. 이를 통해 다른 소비자는 다른 메시지 그룹 ID로 메시지를 처리할 수 있습니다. 특정 메시지 그룹 ID에 속하는 메시지가 표시되지 않는 경우 다른 소비자는 동일한 메시지 그룹 ID로 메시지를 처리할 수 없습니다. 그러나 소비자는 다른 메시지 그룹의 메시지를 처리할 수 있습니다. 순서가 중요하지 않은 메시지 그룹 수를 늘려 보세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?