2013-04-23 78 views
1

我有一個WCF服務正在監聽Azure服務總線中繼,這是因爲我無法更改的原因我是在Windows服務中自託管的。WCF併發連接和Azure服務總線中繼

服務一旦被併發負載下投入 - 通常是通過賦予一系列的長時間運行的請求 - 我們開始從Azure的服務總線收到以下消息回:

<Error> 
<Code>502</Code> 
<Detail>Bad Gateway.TrackingId:f0e32d08-2721-464c-a108-fe63f1efc443_G23,TimeStamp:4/23/2013 8:22:18 AM</Detail> 
</Error> 

我們懷疑併發負載的原因這個問題。

我的服務是完全無狀態的。

ServiceHost = a WebServiceHost which we instantiate ourselves. 
Binding = BasicHttpRelayBinding 
InstanceContextMode = Single 
ConcurrencyMode = Multiple 
SessionMode = NotAllowed 
ServiceThrottlingBehaviour.MaxConcurrentConnections = A very large number 
Transport = Streaming 

我有四個問題:

  1. 是否上面的錯誤看起來像一個併發負載問題?
  2. 我應該考慮哪些其他配置選項來提供更大的規模。
  3. 在自託管的Window Service環境中,當併發連接限制被擊中時會發生什麼?服務會失敗嗎?連接會排隊嗎?
  4. 有沒有一種方法可以在任何特定時刻可靠地監控併發連接的數量。

回答

3

我是的員工Azure服務總線中繼

我剛剛運行了一個查詢來追蹤您的問題。 (以供將來參考,這本來是容易得多,如果我知道你正在使用的命名空間。

看來,作爲連接到服務總線當502請求是沒有檢測到ServiceHost的監聽嘗試。

最簡單的調試方法是將ConnectionStatusBehavior掛鉤到您的端點,並掛接ServiceHost上的OnFaulted事件。

另請注意,Service Bus中的特定虛擬機可能會在短時間內脫機。發生這種情況時,您的ServiceHost可能會脫機約5-15秒。避免這種情況的最佳方法是始終確保您將(2)ServiceHosts託管在單獨的進程/ AppDomain中,以便任何單個VM停機都不會影響您的服務。 (這是非常相似的網站託管建議。

如果有任何意外發生的問題按照這些建議後,請直接聯繫[email protected]我,所以我們進行調查。

+0

嗨託德,謝謝你的回覆。我們一直在使用ConnectionStatusBehaviour診斷我們的連接,並且在此期間沒有監視任何連接事件。它目前是澳大利亞的公共假期,但我會在接到您的報價後與您聯繫,並在重返工作時與您聯繫並提供更多詳細信息。再次感謝。 – 2013-04-25 07:36:54