Performance Features

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

A new generation of applications puts a greater demand on performance and scalability attributes of Web servers. Increasing the speed at which HTTP requests can be processed and allowing more applications and sites to run on one server translates directly into fewer servers needed to host a site. The following are a few of the performance improvements included in IIS 6.0.

HTTP.sys — New

The Hyper Text Transfer Protocol (HTTP) stack in members of the Windows Server 2003 family is implemented as a kernel-mode device driver called HTTP.sys. HTTP.sys is a new feature specific to the Windows Server 2003 family, and is a part of the networking subsystem. IIS is a user-mode process that runs in a completely different execution mode than kernel processing. HTTP.sys is a single point of contact for all incoming (server-side) HTTP requests that provides high performance connectivity for HTTP server applications. HTTP.sys is also responsible for overall connection management, bandwidth throttling, and text-based logging. HTTP.sys implements a flexible Universal Resource Identifier (URI) response cache, called flexible caching, which enables HTTP applications to cache static data and service cached HTTP requests completely in kernel mode with no transition to user mode. HTTP.sys implements a URI namespace mapping mechanism called application pools. With application pools, HTTP applications can claim portions of the URI namespace, which allows HTTP.sys to route HTTP requests directly to the appropriate HTTP applications. As a result of these changes, IIS has increased throughput and scalability of multiprocessor computers, which significantly increases:

  • The number of sites a single IIS 6.0 server can host.

  • The number of concurrently-active worker processes.

ASP Disk Caching — New

Active Server Pages (ASP) processes templates that contain ASP scripts, stores the processed templates in a cache, and serves the cached templates to clients. By default, 250 templates are cached in-memory. If a site uses ASP heavily, this in-memory template cache cannot store all the necessary templates. IIS includes a persistent cache, so templates are cached to disk if the in-memory cache does not have enough space. If the ASP page is requested again, Asp.dll doesn't need to recompile the source code and can load the compiled template from disk. Caching ASP templates enhances performance because cached ASP templates are not processed each time they are called. You can further improve performance by changing the number of cached templates for all applications with low (in process) application protection, medium (pooled) application protection, or individually for applications with high (isolated) application protection.

For more information about ASP caching, see Configuring ASP Applications.

Asynchronous CGI — New

IIS handles the Common Gateway Interface (CGI) implementation asynchronously, thereby removing the potential for blocked CGI processing responses.

Capacity Planning Tracing — New

The IIS tracing feature for capacity planning traces application workloads against ASP script resource usage, such as HTTP response/request times. You can collect and analyze event trace data under different workloads and different hardware configurations and then use this data to help you with capacity planning.

Centralized Binary Logging — New

Centralized Binary Logging allows multiple sites to write to a single log file in a binary, unformatted manner. This logging format improves performance, as the data does not have to be formatted in any specific manner like W3C Extended, IIS, or NCSA formats. With Microsoft SQL Server-TM- support, multiple machines can deposit logs in one centralized database.

Quality of Service —New

Quality of Service (QoS) encompasses the set of methods or processes that a service-based organization implements to maintain a specific level of quality. In the context of Windows, QoS is a set of service requirements that the network must meet to assure an adequate service level for data transmission. The goal of QoS is to ensure that particular sites or applications do not monopolize server resources, like memory or CPU cycles. As an administrator, you can control the level and quality of service for your users by using the IIS implementation of connection limits and timeouts, application pool queue length limits, bandwidth throttling, and process accounting.

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 may want to limit the bandwidth used by your Web server so that bandwidth 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.

CPU Monitoring

CPU Monitoring is a tool that monitors and automatically shuts down worker processes that consume large amounts of CPU resources. CPU monitoring is enabled for individual application pools. CPU monitoring can also help you determine which sites have malfunctioning scripts or CGI processes.

Large Memory Support for x86.0

IIS 6.0 (HTTP.sys) can be configured to cache up to 64 GB on an x86 system if booted with /PAE and without /3GB. This is a new feature as IIS 5.0 cached in virtual memory which was capped at 3GB.