只要分發者正在發送消息,控制和storage queue
中的數字就會上下跳動。進入control queue
的消息將立即從隊列中彈出並顯示在storage queue
上。進入分銷商的primary queue
的消息將立即導致storage queue
的第一條消息被彈出。 很難解釋正在運行的分發服務器的隊列中的消息數量,因爲在您使用計算機管理或隊列資源管理器查看數字時,它們將發生更改。
極端情況是這樣的:
1.在經銷商的主要輸入隊列和沒有工作發生任何工人的任何消息。
- 輸入隊列:0
- 控制隊列:0
- 存儲隊列:工人的數量*每名工人
2.所有工人都在滿負荷工作配置線程。沒有人能夠承擔更多的工作。
- 輸入隊列:0+(成長,如新郵件拉斯維加斯)
- 控制隊列:0
- 存儲隊列:0
在正在運行的系統,它可以是任何之間這兩個極端,所以,不幸的是,僅僅從control
和storage queue
的快照中很難說很多。
一些故障排除提示:
如果storage queue
是空的,經銷商不能把手伸到更多的工作。它不知道在哪裏發送它。如果所有工作人員都完全佔用,則會發生這種情況,因爲他們不會將任何就緒消息發送回control queue
,直到他們完成處理消息。
如果storage queue
與所有員工中的工作線程總數相比一直較小,那麼您即將接近工人的總最大容量。
我建議你開始看看工人的日誌,看看他們正在做的工作是否比平時花費的時間更長。較慢的數據庫/第三方集成?
另一件要檢查的是,是否有任何IO重量被添加到託管分銷商的機器上。如果分銷商已經在接近最大容量的情況下運行,增加額外的IO可能會降低MSMQ的速度,從而導致吞吐量下降。
您如何知道在工作人員上創建的並行線程較少?基於吞吐量降低的結論還是您使用任務管理器檢查? – janovesk
我們有我們自己的監控系統。每個處理程序將有關消息到達的信息保存到監控系統存儲器中,然後我們將其顯示在圖表中。這樣我們可以看到每個工作人員每分鐘收到多少條消息。在設法處理每分鐘4-5次的信息之前 – YMC
您是否也有能力查看工作人員每封郵件的平均/最大/最小處理時間趨勢?如果平均值增加了,它指向處理程序內的業務邏輯比以前慢。如果它和以前一樣,它可能指向分發者以較慢的速率發送消息。 – janovesk