I have experienced some troubles when using the IIS server at my workstation with Windows 7. This is a development machine and I don't need to use it as a production server or anything, but for some tests it's quite usefull to see what happens when a lot of requests comes concurrently (in this case even in the same session).
I have learned that with my edition of Windows 7, the limit of requests is 10, but I thought it only means the limit of requests that can be served at any point of time. What I am experiencing instead, is that after firing 10 requests one by one, if the first one didn't complete before the last one was fired, it never completes. The whole IIS is dead, no further requests are put in the worker开发者_如何转开发 process queue (there are already 10 requests there hanging so it kinda makes sense) and the only way to go on is to restart.
Is this a standard behavior that cannot be changed on Windows 7 and does firing 10 requests really have to kill IIS (or at least the current worker process) ? Is there some way to change the configuration to fix it (without compromising the setup by creating bunch of worker processes etc.) ?
There is a 10 connection limit in client editions of Windows (related to file server and similar functions). As I understand it there is no such limit for HTTP requests in IIS.
I would assume that it was far more likely to be my code—some deadlock or other concurrency bug appearing when some level of concurrency reached.
To investigate I would start with a debugger (if you have VS Ultimate then IntelliTrace should really help). But also consider taking a process dump when you get a hang and then load into the debugger to see what each worker thread is doing. . procdump
from SysInternals will dump your worker process.
精彩评论