2011-01-13 31 views
4

我已經在我的開發環境中運行了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安全能夠以某種方式優化轉發實例需要解密的內容,從而提高性能。

星期一我想關閉傳輸層(發起者和轉發者之間)的加密,看看我們的瓶頸是否發生。這是否有可能導致我們的通信產生巨大的開銷,或者一個轉發實例是否會產生如此大的瓶頸?

+0

您好Graeme,Remus Rusano的博客包含一些很好的服務代理信息(如果您還沒有看到它):http://rusanu.com/blog/ – 2011-01-13 14:48:30

+0

您在服務代理性能計數器值方面看到了什麼? :http://msdn.microsoft.com/en-us/library/ms166069.aspx – 2011-01-14 02:25:31

回答

3

什麼是SQL Server版本?

有幾個問題與轉發性能有關。我建議您升級到最新的SQL Server 2008 R2並部署最新的累積更新。如果升級在您的環境中存在問題,則只能升級轉發器實例。

0

這可能是一個愚蠢的建議,但你最近是否改變了網絡拓撲結構?也許換掉網線或過熱開關?如果這種情況突然發生,聽起來更像是物理變化而不是邏輯變化。我會檢查兩臺機器上的Windows事件日誌。

-1

是的,對話安全是與轉發器結合的最佳方法。否則,開銷將是巨大的。