We have a windows application which calls webservice methods for database access. We've found a case where we make a long (15+ seconds), asynchronous webservice call to a WCF service on IIS. If the UI makes other, blocking (it's old code), webservice calls while that's going on, those additional calls block until after the initial async call completes.
This does not happen when the UI and the webservices are both running in Visual Studio with IIS Express: The blocking calls are quick, and all of that stuff completes long before the long async call finishes.
The webservices all have the following:
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
Also, maxConnections="500" everywhere.
We would like to make IIS handle these concurrent webservice calls the same way IIS Express does, concurrently.
...
If it helps this all make sense: We do a search for objects. The search returns the top 50 (by default) items that meet the criteria, and at the same time we do an asynchronous call for count(*) on the same query. The count query can take a very long time. The users insist that sometimes they want to know what the total count is, but they usually want to be able to open objects in the results list long before the count comes back. Opening the objects is where the synchronous webservice calls come in. Formerly, the search results and the count were all part of the same webservice method.