- Unleash Your Web Server's True Power!
- Web Tuning Strategies
- Strategy: Optimize NT's Network Subsystem for Web-Based Workloads
- Strategy: Tune the Web Server Software Engine to Utilize All Available Server Resources
- Strategy: Tune Your Web Application to Utilize Available CPU Resources
- Strategy: Design the Disk Subsystem Layout for the Low Latency
Tuning the Iis Queue Size
CPU resources are not that inexpensive that you want them to sit around idle, so let's ensure they are put to good use! Under heavy Web workloads, keeping Iis properly fed with data is important. First determine if you have additional CPU capacity available by monitoring Perfmon's Processor object's Processor Utilization counter for each CPU in your Web server. Not all workloads are distributed well across all processors in an NT environment, so watch each processor's usage closely. If your processor usage looks relatively well distributed, and if only 30 percent of processor resources are being used, consider increasing the workload that Iis will accept.
To increase the workload that Iis will accept, add the registry value HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\ListenBacklog=0x1E. This increases the maximum active connections that are held in the Iis queue from the default of 15 to 30. Whenever this queue length limit is reached, the IIs will reject any new connections until the queue length shortens. Tune this queue length lower if a system bottleneck begin to occur, and subsequently increase this value if Web requests are being rejected and you have the CPU resources to support more workload. Setting the ListenBackLog value high when you do not have the CPU resources available to support the increased workload will cause longer waiting periods for your Web server's end users. This is sometimes worse then no response at all.
Based on this same concept, you can increase the number of IIs threads that are used to respond to Web requests by adding the registry entry HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\MaxPoolThreads=12. This registry entry specifies the maximum network request threads per processor. The default is 10. Here we increased the value to 12. Use extreme caution when tuning IIs with all of these CPU-specific options; more is not always better. You must always ensure that you have sufficient processor resources because it is possible to increase these values too high and actually lower your server's overall performance as experienced by your end-user Web customers. If your CPUs are becoming overworked by Inetinfo threads, which can be observed under Perfmon's processor object processor usage counter, lower the MaxPoolThreads value.