2010-10-06 61 views
1

我有一個非常嚴重的多線程(同時數百到數千)的Windows服務。 這些線程掃描不同的機器並調用一個Web服務器的WCF Web服務。 最近我開始出現超時錯誤。這讓我困惑的事情是幫助解密WCF超時錯誤

請求信道超時而 後 00等待答覆:02:41.8806080。將傳遞給呼叫的超時值增加到 請求或增加綁定上的SendTimeout值 值。分配給此操作的時間 可能有 是較長超時的一部分。 服務器堆棧跟蹤:....異常 重新拋出在[0]:... HTTP請求 到的 'http://XXX/XXX/MonitorService.svc' 已超過 00:10分配的超時:00。分配給此操作的時間可能是更長超時的部分 。在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(引發WebException 引發WebException,HttpWebRequest的要求, HttpAbortReason abortReason)

我的問題是在在7分鐘內發生了什麼?它是在客戶端等待10分鐘,而在網絡服務器上等待2:41? 爲什麼會這樣? 如果我在同一時間從不同的線程數百次調用web服務,它是 莫名其妙地排隊在客戶端上?甚至在到達IIS之前?

我感謝任何幫助。非常感謝提前。

回答

1

這很難診斷。發生這種情況可能有很多原因,並且在能夠清楚地說出發生了什麼之前,您必須找到有關係統的更好信息。您應該使用性能計數器來監視Web服務調用的數量並在Web服務器上進行處理。超時的原因可能是:

  • 限制服務只能處理有限數量的請求或只能同時處理有限數量的實例和會話。其他請求正在隊列中等待服務器。加上緩慢的處理,這可能是一個很大的限制。
  • 爲集服務
  • 網絡帶寬併發設置如果您的Windows服務洪水與各大郵件
  • HTTP連接持久性的網絡 - 默認情況下,機器可以創建只有兩個通過HTTP在同一臺服務器的並行連接。其他請求正在客戶端隊列中等待。
  • 等+組合
+0

HTTP持久連接 - 默認情況下,機器只能通過HTTP創建兩個到同一服務器的並行連接。其他請求正在客戶端隊列中等待。 - 這讓我害怕。有沒有什麼辦法來配置它。通過HTTP連接到一臺服務器的最大連接數是多少? – Marcin 2010-10-07 09:11:10

+0

這是在HTTP協議中定義的。如果你想玩一些並行的HTTP連接,可以在客戶端使用System.Net.ServicePointManager(可能是你的Windows服務)。它提供了名爲DefaultConnectionLimit的屬性。在客戶端機器上,其默認值應爲2.您可以更改此值以使用更多並行連接。 – 2010-10-07 09:46:03

0

我有一個WCF超時錯誤與被拋出沒有其他異常。最終,我添加到配置文件中的標記可以啓用跟蹤,從而限制了有效負載大小,並防止發送響應表單。一旦我註釋到標籤,通常預期的響應就會恢復。

+0

更正:將跟蹤標記留在那裏作爲註釋最終導致System.ServiceModel.ServiceActivationExcception: 內存門檢查失敗,因爲... 刪除跟蹤標記可解決此問題。 – Nagos 2016-02-18 21:45:22