8 Comments

ASP.NET has an outgoing connection limit which is set to 2 connections by default. It means that the ASP.NET process does not create more than 2 concurrent connections simultaneously, but instead queues them up.

Consider the scenario where you call 4 web services asynchronously from the same method. What happens is that the first two starts to execute, while the next two waits for the first two to finish. The same thing happens for HttpRequests.

That is a waste of time in most cases, so you can raise the connection limit to allow more simultaneous reqests in the web.config.

<system.net>
  <connectionManagement>
     <add address="*" maxconnection="8"/>
  </connectionManagement>
</system.net>

Every asynchronous request is started in its own thread, so you have to be careful not to raise the limit too far. The more CPU’s or cores the web server have, the higher can you set the connection limit.

You can read more about asynchronous requests and the connection limit on MSDN.

Comments

Comment by NinjaCross

Nice shoot.
This is often an under-looked argument, and it's so strange if you consider that it's one of the most important.
Anyway, it's so hilarious the first section of the MSDN article you linked... it starts with "The Scenario: Performance Devastation ..." :D

Comment by Zvika Rap

Sorry, but this was only true for ASP.NET 1.1 ...
In ASP.NET 2.0, however, you no longer need to configure maxConnection manually as it is now automatically scaled and set.

More details: www.microsoft.com/.../

Zvika Rap