2010-09-14 75 views
3

我有一個多線程的Windows服務。每個線程都調用WCF服務的各種方法。之後圍繞一段時間所有的呼叫我做的WCF服務導致超時:稍後獲取WCF服務超時(20分鐘)

請求信道超時 試圖00:10:00後發送。 增加傳遞給 的請求的超時值,或增加綁定上的SendTimeout值 。該 時間分配給此操作可能 已經較長 超時

的一部分正如你所看到的超時時間爲10分鐘,我也嘗試過這樣的:

serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200"/> 

但沒」幫助。

我使用Process Explorer檢查了w3wp.exe,但找不到任何會指向我的地方。 我對web服務所做的所有連接都關閉了。

有沒有人有任何想法如何解決這個問題? 我想知道這些電話是否正在正確處理,但其中有太多電話,所以他們開始超時,或者他們掛在那裏,等待?

我該如何檢查? 我在想服務器只是過載,但只有CPU超過50%,內存不是。

+0

您可以在這裏找到幫助:http://blogs.msdn.com/b/hongmeig/archive/2010/03/06/timeouts-in-wcf-and-their-default-values.aspx – 2010-09-14 17:31:48

回答

0

答案是性能計數器。這是如此複雜的解決方案,您可以在一些跟蹤中簡單地監視它。您需要重量級的工具進行健康監控=內置和自定義性能計數器。您可以爲您的Windows服務實現自定義計數器,並監視每秒創建多少個呼叫以及完成多少個呼叫。您還可以使用build in counters作爲WCF服務來監視有多少實例正在運行以及每秒處理多少個呼叫。如果這些數值差異很大,您就會遇到問題 - 您的服務將被無法及時處理的請求所淹沒。

您還可以從簡單的測試開始,監視WCF服務處理的時間。如果您的處理需要1秒,則您無法每秒撥打200次以上的服務。

+0

非常感謝拉吉斯拉夫。我想你是對的。我希望有一些能夠告訴我有多少請求正在進入,正在處理多少請求,多少次失敗等等的信息......我會嘗試您的建議。 – Marcin 2010-09-14 18:49:05