Our team just got back from a fun trip to Portland, OR to attend the Portland Code Camp. Glenn Block did a great job of putting this together and it was an exciting opportunity to meet developers outside of the Microsoft bubble. A fairly large group of us from the AppFabric/WCF/WF team were able to go and a few of us gave presentations. After a fairly successful AppFabric TV episode, Glenn suggested I should try a presentation on WCF performance at the code camp.
"This should be pretty easy", I said to myself. I have all the materials, I know the subject matter in and out, and have demos that are already prepared. So I transferred my demo code over to my laptop and figured I'd go over all of it a few times on the train to make sure I have everything ready. But my demos were just not working the way I thought they should. The train's wireless didn't work, so I was trying to find answers on my phone while fiddling with settings on my laptop. Then it dawned on me. I vaguely remember hearing a long time ago that IIS on Vista and Windows 7 has connection limits because they don't want you to use client operating systems as servers. Searching the web on my phone, I found the awful confirmation of my suspicions. At the bottom of the page you can see that the connection limit is 10. I needed 100. I started to sweat bullets as I thought about how I was going to get around this. There was no way I was going to get a server OS in time for the presentation.
When we arrived at the hotel in Portland, I quickly connected to the internet and did some research. "Maybe IIS Express will do the trick", I thought. But the details on the connection limits were not easy to come by. The best information that I could find was in a comment on the announcement for IIS Express on Scott Guthrie's blog:
re: Introducing IIS Express
>>>>>>>>>> Will it be possible to deploy it as redistributable with an own application? Any very very important - will there be another stupid connection limit 10 to max 40 like on XP IIS (aka adsutil set w3svc/MaxConnections 40)?
Yes - you can redistribute IIS Express with your applications. There are no connection limits.
Hope this helps,
Having this as my only answer did not exactly fill with me confidence, but at least it was worth a shot. Thankfully, IIS Express indeed does not have a connection limit and was able to handle my demo. The presentation went pretty well too. I ran into a couple other hiccups along the way, but figured them out in time. For instance, if you use Process Explorer, you have to exit it if you want to use the Concurrency Analyzer tool. Also, IIS Express doesn't work well with Concurrency Analyzer as it seems to be unable to change the environment variables. Luckily for me I was able to remote into my server back at the office and get a profile from a real IIS 7 server.
As Scott Hanselman says, it's very important to practice all of your demos. Things come up that you were never expecting to see.
Well, Dustin, IIS does not have connection limit - OS (Windows) does. This means that IIS, IIS Express or UltiDev Web Server, Apache, or whatever else - will be limited to the same 10 open requests. Your client can issue more than that and be stuck while 10 at a time get served, especially if keep-alive is off, but using IIS Express instead of IIS gave you precisely 0 additional connections because the limit is built into the Windows TCP/IP/WinInet stack.
Yes, VH, I should clarify by saying there is no simultaneous request execution limit in IIS express. Connection is an overloaded term.