Preventing Processor Bottlenecks
Updated: August 22, 2005
Applies To: Windows Server 2003, Windows Server 2003 with SP1
Servers running IIS 6.0 rely on the speed and efficiency of their processors. IIS 6.0 code is multithreaded for efficient scaling on uniprocessor and multiprocessor computers, and is largely self-tuning. Even so, processor bottlenecks can occur on very active servers.
A processor bottleneck occurs when one or more processes consume the majority of the processor time. This forces threads that are ready to be executed to wait in a queue for processor time. Processor bottlenecks can occur on multiprocessor computers even when only a single processor is fully loaded, if the work in the queue cannot be — or is not — distributed to the other processors. Because a processor bottleneck is not centered in other components, such as memory, disks, or network connections, upgrading or adding to those components does not fix this performance problem, and can sometimes make it worse.
The processors on a server running IIS 6.0 must support the operating system and processes unrelated to Internet services, in addition to IIS 6.0 processes. The processors must also support applications related to Internet services, such as those that assemble data from Microsoft® SQL Server™ databases or generate dynamic Web pages.
To identify processor bottlenecks on the server, you need to monitor process activity, connections, and threads. After evaluating the data, determine the appropriate measures for improving processor performance through hardware upgrades, software configuration changes (limiting connections or allowing a higher thread count), or the redesigning of Web sites to reduce the processor workload.