Machine.config and processmodel with IIS express

asp.netiisiis-7.5iis-expresswebmatrix

I'm wondering if modifying processModel in machine.config will have any effect on an IIS express integrated mode application?

I'm trying to modify the maxWorkerThreads to at least 100 because I was comparing normal IIS vs IIS express on windows 7 using WCAT to see if scott was correct when he said IIS express has no connection limits.

Although IIS express does show 30+ requests executing at the same time against the normal IIS limit of 10 the actual total requests per seconds are comparable between both and IIS express has much higher cpu usage and on average 70 requests queued vs 0 requests waiting for normal IIS! And the CPU is only about 70% on an quad core i7. surely there is room for optimization?

additional details

I have uploaded the WCAT results run on windows 7, same script, to
http://d1yb9lkqglrfzu.cloudfront.net/IISExpress-100VU-MachineConfig.zip

  1. IIS Express has slighter higher requests per second, and total transactions served than normal IIS.
  2. IIS Express is executing up to 50 requests at a time, while normal IIS on windows 7 is limited to 10 as designed.
  3. IIS express is using 30% higher cpu, probably because of additional requests it handles at a time.
  4. But on average Express requests take much longer to complete. see Request Execution Time performance counter and time analysis (first and last byte). Express is only able to beat IIS in total requests served because it can handle more requests at a time!

Theories

  1. Could the fact that IIS express is printing each request to command line window even with trace set none be slowing it down.

  2. I also noticed a lot of additional modules registered in IIS express applicationhost.config that are not in IIS applicationhost.config. Could then extra debugging/tracing modules be causing the problem.

  3. I notice IIS express does not have FileCache and HTTPCache modules. Could that be why?

I'm hoping asp.net experts can clarify how these results are possible if IIS express is not limited.

Best Answer

Machine.config settings apply to asp.net applications running within IISExpress. Just make sure you match the .Net version and bitness (iisexpress only runs in 32 bit mode so the

  • %windir%\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config or
  • %windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config are the correct to files based on the CLR version. Don't edit the one in Framework64 directory.

IIS Express doesn't throttle connections, though there may be some limitations coming from the OS itself. Performance is not really top priority for iis express. IIS Express doesn't intentionally throttle execution, but doesn't go out of it's way to fully utilize CPU. Your performance overhead observation is interesting. I will explore what may be causing it. Did you try to run single thread client application in a loop to see how IIS compares with IIS Express.