I am working on a web application written in ASP.Net, but which includes javascript web service calls (to the same site) to populate some pages dynamically. It is hosted on IIS 8.5 on a Windows 2012 R2 server.
While troubleshooting general performance issues, I determined that concurrent requests are being processed serially, not simultaneously. I have not confirmed that only one request is processed between all users, or one for each user though I suspect the former.
To confirm this, I wrote an extra function in my web service that does nothing but sleep for 5 seconds, and then wrote a javascript function that does a jQuery AJAX call to this function several times in a for loop. I confirmed that the call is being made asynchronously, but the call completions are separated by the sleep interval. Additionally, the server logs show the time to process each call increments by 5 seconds. So clearly, the calls are all being received immediately, but cannot actually execute their sleep method until all prior calls have been completed.
So the meat of the question is: how can I get IIS to process my requests simultaneously?
So far my best guess is that it is somehow running in Debug mode, since that supposedly forces it to process requests sequentially. I can't find anything in my publish profile or web.config that would enable debug mode and I added "" to my machine.config but to no avail. I also bumped up the "Maximum Worker Processes" in the Application Pool settings, but no luck.
What else might I try? Where else should I look?