2016-12-03 8 views
0

내 SQS 소비자 서비스의 최근로드 이벤트를 분석 중이며 나에게 적합하지 않은 일부 SQS Cloudwatch 메트릭이 있습니다. 본질적으로 대기열에 메트릭에 포함되지 않은 메시지가 오버로드 된 것으로 보입니다. 내가 선택한로 5 분 동안의 데이터를 요약 시작하자 :SQS Cloudwatch Sanity

  • ApproximateNumberOfMessagesVisible : 215,686 -> 233,605 (이 기간 동안 17,919의 이득)
  • ApproximateNumberOfMessagesNotVisible : 2239 -이 기간 동안 110> 2129 (손실)
  • NumberOfMessagesSent : 31,441
  • NumberOfMessagesDeleted : 24,665

무엇 나를 ApproximateNumberOfMessagesVisible가 AG가 발생되는 문제인한다 이 아닌이 처리 된 메시지 수 (NumberOfMessagesSent - NumberOfMessagesDeleted = ~ 6k)보다 몇 배 이상 많습니다.

보이지 않는 메일 수에 대한 측정 항목을 포함 시켰지만 (보이지 않는 메일이 갑자기 나타 났을 때), 그럴 것 같지 않습니다.

어떻게 가능합니까?

답변

1

메시지가 어떻게 보입니까?

  • 대기열로 전송됩니다.

  • 메시지가 수신되어 삭제되지 않아 표시 상태로 되돌아 가고 표시 시간 제한이 만료되기 전에 삭제되지 않았기 때문에 다시 표시됩니다.

결정적으로 SQS의 카운터가 옳고 그른 것을 명시하지만, Why do SQS Messages Sometimes Remain In-Flight on a Queue에 내 이전 코멘트에서이 제안을 고려하는 것이 여기에 제공된만큼 역사가되지 않습니다 : CloudWatch에서에서

이 모두 선택 NumberOfMessagesReceivedNumberOfMessagesDeleted에 대한 그래프. 하나의 그래프가 완벽하게 오버레이되고 다른 하나는 완전히 마스킹된다는 것을 발견해야합니다. 어느 정도까지는 그렇지 않다면, 도서관에서 귀하가 사용하고 있거나 귀하의 소비자에게 문제가 있음을 강력히 시사합니다. 이는 귀하가 관찰하는 증상을 유발할 수 있습니다.

는 한 번만 큐에서 단일 메시지를 삭제할 수 있습니다,하지만이 발생하기 전에 실수로 또는 의도적으로 바닥에 메시지를 삭제하는 과정이있는 경우, 하나의 메시지를 여러 번받을 수 있습니다. 가시성 타임 아웃이 만료 된 후에 다시 SQS가 다시 표시됩니다. 이러한 일이 발생하면 위에서 언급 한 두 가지 측정 항목이 시간이 지남에 따라 완벽하게 정렬되지 않습니다.

그렇지 않으면보고있는 통계와 동일해야합니다.

근로자가 모두 올바르게 작동하고 첫 번째 시도에서 각 메시지를 처리하고 삭제하는 경우 말이 맞습니다.

AWS 콘솔을 사용하여 메시지를 검사하는 경우, 콘솔에서 메시지를 수신 한 다음 정상적인 소비자와 마찬가지로 가시성 제한 시간을 재설정하기 때문에 내가 언급 한 두 카운터가 일렬로 정렬되지 않으므로 인위적인 결과가 발생합니다 삭제 카운터와 비교하여 수신 카운터를 늘립니다.