在當前項目中,我們當前使用8個並行的工作角色機器,它們實際上有點像不同的,而不是azure可能期望的。蔚藍雲隊列的可伸縮性
該系統的短概要:
- 每個工人開始到實際連接至雲隊列8個處理和處理消息
- 每個進程訪問三種不同的雲隊列用於收集消息用於不同的目的(增量識別,備份和元數據)
- 每條消息都會導致WCF調用ERP系統來收集信息,並最終在ReDis緩存中添加retreived響應
- 此方法已被選擇在許多小型機器上由於成本和性能的原因。雖然24臺單核機器對ERP系統的執行速度爲400次/秒,但8臺四進制8臺機器每秒可執行800次以上的呼叫。
現在回答這個問題:當增加機器數量以將性能提高到1200個調用/秒時,我們經歷了Cloud Queue的中斷。在同一時刻,80%的機器進程不再處理消息。
在這裏,我們有兩個問題:
- 遠程調試是不可能的這些過程,但它是可以使用dile得到一些信息出來。
- 我們使用Cloud Queue的GetMessages方法從隊列中取得4條消息。 Cloud Queue始終以0消息迴應。重新連接雲隊列沒有幫助。
重新啓動工人確實有幫助,但很快就會導致同樣的問題。 我們是否碰到了Cloud Queue的可擴展性的自然結局,並且應該切換到Service Bus?
更新:
我一直沒能完全理解這個問題,我在the natual borders of Cloud Queue描述它。
總結:
- TCP連接的計數都十分可觀。其實太令人印象深刻(多幾百個)
- 再回到原先的容量讓系統恢復正常
實際上,更好的性能是我們之所以選擇Cloud隊列的原因。我們從來沒有通過8個流程達到最大8個工人達到2k/s。從我的觀點來看,4條消息 - 更糟糕的情況是,只有不到300條電話。我個人認爲開放式TCP連接的數量不能由操作系統維護。也很奇怪,根本沒有例外。沒有消息。 :-(無論如何感謝鏈接! –