我有一個非常嚴重的多線程(同時數百到數千)的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之前?
我感謝任何幫助。非常感謝提前。
HTTP持久連接 - 默認情況下,機器只能通過HTTP創建兩個到同一服務器的並行連接。其他請求正在客戶端隊列中等待。 - 這讓我害怕。有沒有什麼辦法來配置它。通過HTTP連接到一臺服務器的最大連接數是多少? – Marcin 2010-10-07 09:11:10
這是在HTTP協議中定義的。如果你想玩一些並行的HTTP連接,可以在客戶端使用System.Net.ServicePointManager(可能是你的Windows服務)。它提供了名爲DefaultConnectionLimit的屬性。在客戶端機器上,其默認值應爲2.您可以更改此值以使用更多並行連接。 – 2010-10-07 09:46:03