我一直在WCF写一个长轮询服务.我正处于负载测试阶段,我遇到了一个问题,当我遇到5000个未完成的请求时,我开始得到:
The HTTP service located at (my service) is too busy.
Run Code Online (Sandbox Code Playgroud)
我已将其实现为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" />
Run Code Online (Sandbox Code Playgroud)
但我仍然有这个限制(有问题的机器可以处理它,系统的其余部分异步回到消息排队系统).
任何人都可以想到其他什么吗?
我是WindowsServer 2008R2上的IIS 7.5.Asp.NET 3.5SP1.
如果我启动最大工作进程,我可以超过5K并发请求.
我以前遇到过 5000 的限制,但不幸的是不记得在哪里了。
这有什么帮助吗? http://msdn.microsoft.com/en-us/library/ee377061%28BTS.10%29.aspx
或者
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/41aa5f44-ead6-47ba-8bd7-c918c9f0aee0/
| 归档时间: |
|
| 查看次数: |
3679 次 |
| 最近记录: |