Scalability Features in IIS 6.0

Applies To: Windows Server 2003, Windows Server 2003 with SP1

This section describes features in IIS 6.0 that can improve the scalability of your application server.

Important

Do not enable the features described in this chapter on a production server before you establish a performance baseline in a test environment. If enabling any of these features degrades performance, continue testing or disable the feature and return your server to the pre-change configuration.

Worker process isolation mode

IIS 6.0 introduces worker process isolation mode, which runs all Web applications in an isolated environment. When you run IIS in worker process isolation mode, you can configure applications to run in separate application pools. An application pool is a grouping of URLs routed to one or more worker processes. An application pool allows specific configuration settings to apply to these worker processes.

Worker processes operate independently: if one fails, it does not affect other worker processes. The pooling of applications protects applications from the effects of worker processes that support other application pools. In this way, applications are protected from each other.

When a worker process enters an unhealthy state and stops processing requests, the HTTP protocol stack (HTTP.sys) continues to queue requests. The World Wide Web Publishing Service (WWW service) detects that the worker process is unhealthy and shuts it down, starting a new worker process if requests are waiting in the queue or if new requests arrive. Hence, even when a worker process fails, the WWW service, by means of HTTP.sys, continues to accept requests and shields the user from loss of service because the client can still connect to the WWW service.

For more information about IIS 6.0 application isolation modes, including how to enable and configure worker process isolation mode, see Running IIS 6.0 as an Application Server. For more information about how IIS 6.0 processes requests, see IIS 6.0 Architecture.

On-demand process start

IIS 6.0 does not allocate resources at initialization time; instead, it allocates resources as needed, which increases site scalability. In particular, IIS 6.0 application pools only start processes when the first request for a URL is served by the application pool.

HTTP Keep-Alives

IIS 6.0 supports HTTP Keep-Alives, an HTTP specification that can significantly improve server performance. Most Web browsers request that the server keep the connection open across multiple requests; this is called a Keep-Alive. Without this feature, a browser must make numerous connection requests for a page that contains multiple elements, such as graphics. A separate connection might need to be made for each element. HTTP Keep-Alives increase server efficiency by reducing server activity and resource consumption. HTTP Keep-Alives can also increase browser responsiveness across a slow connection. For more information about HTTP Keep-Alives, see Optimizing IIS 6.0 Performance.

Web gardens

When running in worker process isolation mode, IIS can be configured to have multiple worker processes servicing requests for an application pool. This configuration is known as a Web garden. When a worker process in an application pool is busy processing a request, other worker processes can accept and process requests for the application pool. For more information about Web gardens, including how to enable or configure this feature, see Running IIS 6.0 as an Application Server.

Processor affinity

To efficiently use resources on large multiprocessor servers, IIS 6.0 enables you to configure application pools to establish affinity between worker processes and individual processors. When set, processor affinity forces worker processes to run on specific microprocessors or CPUs. This affinity applies to all worker processes that serve the Web sites and applications of an application pool. For more information about processor affinity, including how to enable or configure this feature, see Optimizing IIS 6.0 Performance.

Idle timeout for worker processes

An IIS 6.0 application pool can be configured so that its worker processes request a shutdown if they are idle for a configurable amount of time. Shutting down worker processes frees up unused resources and reduces CPU load. For more information about idle timeout, including how to enable or configure this feature, see Running IIS 6.0 as an Application Server.

Bandwidth throttling

If the network or Internet connection used by your Web server is also used by other services, such as e-mail or news, you can limit the bandwidth used by your Web server so it is available for those other services. If your Web server hosts more than one Web site, you can individually throttle the bandwidth used by each site. For more information about bandwidth throttling, including how to enable or configure this feature, see Optimizing IIS 6.0 Performance.

HTTP compression

HTTP compression allows faster transmission of pages between the Web server and compression-enabled clients. In addition, HTTP compression makes the best use of available bandwidth and can significantly increase site performance. For more information about HTTP compression, including how to enable or configure this feature, see Optimizing IIS 6.0 Performance.

64 GB cache capacity

For workloads that require large amounts of cached data, the IIS 6.0 kernel-mode driver, HTTP.sys, can be configured to cache up to 64 gigabytes (GB) on an x86-based or compatible processor–based system. For more information about IIS caches, see Improving Scalability by Optimizing IIS 6.0 Caches.

Centralized binary logging

IIS 6.0 supports centralized binary logging, where multiple Web sites send binary, unformatted log data to a single log file. When many Web sites are hosted on the same server, the process of creating hundreds or thousands of formatted log files and writing the log data to disk can quickly consume valuable CPU and memory resources, thereby creating performance and scalability problems. Centralized binary logging in IIS 6.0 minimizes the server resources that are used for logging, while providing detailed log data for organizations that require it. For more information about centralized binary logging, including how to enable or configure this feature, see Analyzing Log Files.