我一直在WCF中編寫長輪詢服務。我在負載測試點和我遇到的是,當我到達5000個未完成的請求,我開始得到了一個問題:編寫長輪詢WCF服務
The HTTP service located at (my service) is too busy.
我實現了這是一個WCF AsyncPattern服務和消耗的工作者/ IO線程數量仍然非常低(就像它應該)。手柄的數量看起來不錯,等等。我想我正在碰到一個反DOS的限制,只是找不到它。以下是我所做的一些事情:
我修改了註冊表,以便MaxConcurrentRequestsPerCPU不是問題。事實上,ASP.NET排隊請求的數量保持爲0.
我已經在web配置中設置了服務限制,所以這不應該是一個問題。 WCF跟蹤沒有顯示任何異常。
我正在使用不包含任何安全性的自定義綁定等,它只有編碼和傳輸(httpTransport)。
我已經修改了machine.config中最多的requestQueueLimit:這是從processModel元素:
<processModel enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="0:00:05"
requestLimit="Infinite"
requestQueueLimit="15000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="0:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="00:09:00"
responseDeadlockInterval="00:03:00"
maxWorkerThreads="250"
maxIoThreads="250" />
但是還是我結束了此限制(有問題的機器可以處理它,其餘系統異步回到消息排隊系統)。
任何人都可以想到別的嗎?
我是WindowsServer 2008R2上的IIS 7.5。 Asp.NET 3.5SP1。
更多信息:當我得到上述錯誤時,ASP.Net v2.0.50727「請求被拒絕」性能計數器跳轉。文檔指出,當請求隊列已滿時會發生這種情況。請求隊列perf計數器爲0,永不變動。
如果我打開最大工作進程,我可以超過5K併發請求。
您正在使用的實例模型是什麼?你有沒有機會碰到一個會議限制?實例和併發模式調整可能是另一個地方看... http://msdn.microsoft.com/en-us/magazine/cc163590.aspx – 2010-12-22 22:32:52