The IIS services run in a multithreaded process designed to operate efficiently on single-processor and multiprocessor computers. An Intel 486, Intel Pentium or Pentium Pro, or RISC processor should be sufficient to handle more than a thousand simultaneous connections. Servers with more activity benefit from multiple processors.
If your data on processor performance indicates that processor queues are developing regularly or while servicing large numbers of connections, monitor the memory of your server. Rule out a memory bottleneck or add more memory before (or in addition to) adding or upgrading processors.
In addition, consider the following suggestions for improving processor performance:
Redistribute the workload. If nearly all of the threads of the Internet Information Server process are busy nearly all of the time, and the processors are at or near their maximum capacity, consider distributing the workload among more servers, or redistributing tasks among servers. You can also add processors, but do so cautiously. Unnecessary or underused processors will degrade performance, not improve it.
Add processors. If the workload is distributed evenly, and all threads in the Internet Information Server process continue to be busy nearly all of the time, or if a processor queue forms when the number of connections rises, add and/or upgrade processors. You can avoid a processor bottleneck during peak use by calculating the processor use on your system when the number of current connections is at its average, and allowing enough processing power to handle twice the average number of connections.
Upgrade the L2 cache. When adding or upgrading processors, choose processors with a large secondary (L2) cache. File server applications, such as Internet Information Server, benefit from a large processor cache because their instruction paths involve many different components. A large processor cache (2MB) is recommended to improve performance on active servers running Internet Information Server.
Improve DPC handling. Platforms that distribute interrupts to all processors do not benefit from the Windows NT default DPC affinity. If you are administering a multiprocessor computer that distributes interrupts symmetrically, such as an Intel Pentium or Pentium Pro (P6) system for Windows NT 4.0, set the value of the ProcessorAffinityMask value entry in the Registry to zero. DPCs will be handled by the same processor that handled the interrupt from which the DPC evolved.
Add network adapter cards. If you are administering a multiprocessor system that does not distribute interrupts symmetrically, you can improve the distribution of the processor workload by adding network cards so that there is one network card for every processor. Generally, you only add network cards when you need to improve the throughput of your system. Network cards, like any additional hardware, have some intrinsic overhead. However, if one of the processors is nearly always active (if Processor: % Processor Time = 100%) and more than half of its time is spent servicing DPCs (if Processor: % DPC Time > 50%), then adding a network card is likely to improve system performance.
Upgrade Network Adapter Cards. If you are adding or upgrading network adapter cards, choose cards with drivers that support interrupt moderation. Interrupt moderation prevents the processor from being overwhelmed by bursts of interrupts. Consult the driver manufacturer for details.
Limit Connections. If you cannot upgrade or add processors, consider reducing the maximum number of connections that each IIS service accepts. Limiting connections might result in connections being blocked or rejected, but it helps ensure that accepted connections are processed promptly.
To change the number of connections, use the Internet Service Manager Properties page for each service. Reduce the number in the Maximum Connections field until the server can handle twice the average number of connections without developing a long processor queue.
Redesign the Web site. You can improve performance and reduce the processor workload by substituting static web pages for dynamic pages and eliminating large bitmapped images.
Adjust the Maximum Number of Threads. Internet Information Server tunes the number of threads in its process dynamically. The dynamic values are usually optimal. In extreme cases of very active or underused processors, you might want to adjust the maximum number of threads in the Inetinfo process. If you change the maximum number of threads, continue careful testing to make sure that the change has improved performance. The difference is usually quite subtle.
On a large network of Intranet and Internet servers, the processors in each server are vital components. However, they work with memory, disks, and the network as an integrated unit. For more detailed information on monitoring and tuning techniques, see Chapter 7, "Monitoring Bandwidth and Network Capacity."