I just want to say for the record that the last five minutes of Ingo Rammer's session this afternoon might have been the most valuable of my entire week. My team is deploying a new system next month with Web Services making up a number of components. Obviously, we have not done any load testing of this system yet because it most definitely will not scale - at least not the way ASP.NET is configured by default.
In the machine.config, you'll find the following element:
<
connectionManagement>
<add address="*" maxconnection="2"/>
</connectionManagement>
This limits the number of concurrent connections to 2 for a single IP address - not a major issue for a web server (one server, thousands of clients). For a web services server that serves up functionality to the web server, however, it is a HUGE issue (one server, ONE client, two max concurrent connections). As Ingo put it, that quad processor web server with 25 threads per processor that can serve 100 simultaneous clients now gets throttled to two. Ouch. Well, it's easy to fix. Just add this to the Web Service's web.config inside <system.net>:
<connectionManagement>
<add address="my.web.server.ip" maxconnection="100"/>
<add address="*" maxconnection="2"/>
</connectionManagement>
So, kudos to Ingo for saving me a lot of pain! The entire session was fantastic - lots of great tips and tricks for tracking down scalability issues that I'm sure will come in quite handy. Bravo!