我已經在我的開發環境中運行了Service Broker幾個月了,並且每秒向1000條消息(足以滿足我的需要)擁有完美的性能。診斷可憐的Sql Server服務代理轉發性能
我也一直在我的真實生產環境的一個複製品上運行,它涉及一個轉發實例,並且今天第一次通過它推動了一些負載,並帶來了可怕的結果!我試圖理解我所看到的,但我掙扎了一下,所以我想我會把它看出來,看看有沒有人可以幫忙。
首先,消息是通過轉發器從開始到結束傳遞。然而,當我推送了幾千條消息時,我發現有20到100個批次被髮送,然後延遲了一兩分鐘。消息最終成功處理。
看着商店(最初的發件人)上的隊列,有成千上萬的消息在等待被轉發出來。
的安全設置是這樣:
Store database -> Certificate -> Forwarding instance -> Windows Security -> Central database
當我打開剖析我看到很多的錯誤:
上轉發實例的一些例子:
7 - Send IO Error (10054(failed to retrieve text for this error. Reason: 15105))
Forwarded Message Dropped (The forwarded message has been dropped because a transport send error occurred when sending the message. Check previous events for the error.)
而且在我的「中央'目標實例:
A corrupted message has been received. The binary message preamble is malformed.
Broker message undeliverable This message was dropped because it could not be dispatched on time. State: 2
任何人都可以幫助我指出我可以做的一些檢查,或者可能是我已經錯過的一些顯而易見的事情。我知道我有什麼錯,但只是看不到。
編輯 - 2011年1月14日 - 更多信息:更多信息: 關於這方面的更多信息 - 我們將消息轉發實例排除在外,立即看到大量改進 - 2000條消息在幾秒鐘內發送。
該體系結構使用傳輸安全性,因此我們正在嘗試切換到對話安全性,因爲我們已經讀過傳輸安全/轉發會損害性能的問題。我們希望Dialog安全能夠以某種方式優化轉發實例需要解密的內容,從而提高性能。
星期一我想關閉傳輸層(發起者和轉發者之間)的加密,看看我們的瓶頸是否發生。這是否有可能導致我們的通信產生巨大的開銷,或者一個轉發實例是否會產生如此大的瓶頸?
您好Graeme,Remus Rusano的博客包含一些很好的服務代理信息(如果您還沒有看到它):http://rusanu.com/blog/ – 2011-01-13 14:48:30
您在服務代理性能計數器值方面看到了什麼? :http://msdn.microsoft.com/en-us/library/ms166069.aspx – 2011-01-14 02:25:31