In this period I working around the optimization fo a BizTalk solution, the following optimization can improve IIS performance:

The first important thing is log only the essential information, or disable the IIS logging.

Check the value of the ASPProcessorThreadMax, this property defines the maximum number of ASP requests that can execute simultaneously, the default value is 25.
Increase the size of ASPProcessorThreadMax until the processor utilization meets at least 50 percent or above.

AspRequestQueueMax parameter, if the value of AspRequestQueueMax is too large, users might perceive that the server is not responding when in fact their request is waiting in the queue.
To calculate the correct value make this operation:
AspRequestQueueMax = AspProcessorThreadMax * number of processors

MaxPoolThreads is a registry entry and it specifies how many pool threads to create per processor, the default is 4, you can set no more than 20.

Disable WCF tracing

In web.config disable debbugging for ASP.NET Application and Web Services
<compilation debug=”false”/>

When you run ASP.NET 2.0 on IIS 7.0 in Integrated mode, the minFreeThreads and minLocalRequestFreeThreads attributes of the “httpRuntime” element in the machine.config are ignored.  For IIS 7.0 Integrated mode, a DWORD named MaxConcurrentRequestsPerCPU within  KEY_LOCAL_MACHINESOFTWAREMicrosoftASP.NET2.0.50727.0 determines the number of concurrent requests per CPU.  By default, the registry key does not exist and the number of requests per CPU is limited to 12.  .NET Framework 3.5 SP1 added support for configuring this via the aspnet.config file, more information in Thomas Marquardt’s Blog

To tune IIS for best performance you can review the following articles:



Please enter your comment!
Please enter your name here