I've been writing a long-polling service in WCF. I'm at the point of load testing and I'm running into a problem that, when I get to 5000 outstanding requests, I start getting:
The HTTP service located at (my service) is too busy.
I've implemented this as a WCF AsyncPattern service and the number of worker/IO threads consumed remains very low (like it should). The number of handles looks good, etc. I'm thinking I'm bumping into one of the anti-DOS limits and just can't find it. Here's some of the stuff I've done:
I've modified the registry so that MaxConcurrentRequestsPerCPU isn't an issue. Indeed the number of ASP.NET queued requests stays 0.
I've set up service throttling in the web config, so that shouldn't not an issue. The WCF traces don't show any exceptions due to that.
I'm using a custom binding which does not include any security, etc. All it has is the encoding and the transport (httpTransport).
I've modified the machine.config to up the requestQueueLimit: Here's the processModel element from that:
<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" />
But still I end up with this limit (the machine in question can handle it and the rest of the system is async back to a message queuing system).
Can anybody think of anything else?
I'm IIS 7.5 on WindowsServer 2008R2. Asp.NET 3.5SP1.
More Information: When