Currently we are developing an ASMX, ASP 2.0, IIS 7 web service that does some calculations (and return a dynamically generated document) and will take approx. 60 seconds to run.
Since whe have a big machine with multiple cores and lots of RAM, I expected that IIS tries its best to route the requests that arrive in its requests queue to all available threads of the app pool’s thread pool.
But we experience quiet the opposite:
When we issue requests to the ASMX web service URL from multiple different clients, the IIS seems to serially process these requests. I.e. request 1 arrives, is being processed, then request 2 is being processed, then request 3, etc.
Question:
Is it possible (without changing the C# code of the web service) to configure IIS to process requests in parallel, if enough threads are available?
- If yes: how should I do it?
- It no: any workarounds/tips?
Make sure you have the “Maximum Worker process” for the application pool set to > 1 to enable the worker pool to become a Web Garden. By default each application pool is set to only use one process, which would cause requests to be queued.
You may also want to look at this article about using ASP.NET 2.0 in Integrated mode on IIS7