2016-12-03 34 views
0

我正在分析我的SQS消費者服務最近的加載事件,並且遇到了一些SQS Cloudwatch指標,這些指標對我來說沒有意義。從本質上講,它看起來像是隊列中超載了未在度量標準中考慮的消息。讓我通過在所選擇的5分鐘內總結數據開始:SQS Cloudwatch理智

  • ApproximateNumberOfMessagesVisible:215686 - > 233605(對於這期間的17919增益)
  • ApproximateNumberOfMessagesNotVisible:2239 - > 2129(對於此期間110丟失)
  • NumberOfMessagesSent:31441
  • NumberOfMessagesDeleted:24665

什麼是我莫名其妙的是,ApproximateNumberOfMessagesVisible正在經歷AG ain(+ 17k)比不是已處理(NumberOfMessagesSent - NumberOfMessagesDeleted =〜6k)的消息數量多很多倍。

我已經包含約無形的消息以及(只是櫃面有一堆突然成爲可見的無形的消息)的數量指標,但是這似乎並不如此。

這怎麼可能?

回答

1

如何顯示消息?

  • 通過發送到隊列。

  • 通過返回到可見的狀態,因爲收到的消息,並沒有刪除,並再次成爲可見的,因爲它的可見性超時過期之前沒有刪除。

有這裏不提供確鑿地指出SQS的櫃檯是對是錯,但是從我對Why do SQS Messages Sometimes Remain In-Flight on a Queue舊評論認爲這個建議足夠的歷史:

在CloudWatch的,同時選擇NumberOfMessagesReceivedNumberOfMessagesDeleted的圖表。你應該發現一張圖完美地覆蓋並完全掩蓋了另一張;如果在某種程度上他們不這樣做,它強烈表明您正在使用的圖書館或您的消費者中存在問題,這會導致您觀察到的症狀。

您可以從隊列中僅刪除一條消息一次,但如果您有一個將消息意外或故意丟棄在地板上的進程,您可以多次收到單個消息。它們再次變得可見,SQS將在可見性超時到期後重新發送它們。如果發生這種情況,上面提到的兩個指標將隨着時間的推移而不完美地排列。

否則,他們應該 - 也應的統計數據,你所看到的。

所以,你是對的,沒有意義,如果你的工作人員都表現完美,處理和刪除每個消息的第一次嘗試。

請注意,如果您使用AWS控制檯檢查郵件,我提到的兩個計數器將不會整齊排列,因爲控制檯接收郵件,然後重置其可見性超時,就像普通的使用者一樣,所以這會人爲地與刪除計數器相比,使接收計數器膨脹。