Migrating Performance-Related Attributes

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

In worker process isolation mode, IIS 6.0 can be configured to optimize the performance of an application pool, allowing you optimize the performance of your Web applications. Migrating the performance-related Machine.config attributes helps ensure that your Web applications perform as they did on IIS 5.0.

Note

In addition to the configuration settings mentioned in this section, IIS 6.0 provides CPU utilization monitoring for worker processes. For more information, see Configuring Application Pools in IIS 6.0.

The Machine.config attributes that affect performance-related metabase properties include:

  • webGarden and cpuMask

  • idleTimeout

  • restartQueueLimit

Migrating the webGarden and cpuMask Attributes

The combination of the webGarden and cpuMask Machine.config attributes provide configuration for ASP.NET on IIS 5.0 for Web gardens. Web gardens are created when there is more than one worker process servicing applications. In IIS 5.0, Web gardens are created for use by all applications running on the Web server. In IIS 6.0, Web gardens are created within each application pool.

Web gardens in IIS 5.0 allow ASP.NET to schedule a separate worker process for each microprocessor on a Web server with multiple microprocessors. In contrast, you can create a Web garden on IIS 6.0 by specifying multiple worker processes for an application pool, regardless of the number of microprocessors in the Web server. For more information about Web gardens in IIS 6.0, see Configuring Web Gardens.

The webGarden Machine.config attribute, which has a default value of False, controls CPU affinity when used in conjunction with the cpuMask attribute. When the webGarden attribute is set to:

  • True. ASP.NET creates a separate worker process for each processor specified in the cpuMask Machine.config attribute.

  • False. ASP.NET creates only one worker process and the cpuMask Machine.config attribute is ignored.

The cpuMask Machine.config attribute, default value 0xffffffff, specifies which microprocessors on a multiprocessor Web server are able to run worker processes initiated by ASP.NET. By default, all processors are able to run worker processes initiated by ASP.NET. The cpuMask attribute also contains a bitmask value that indicates the microprocessors that are able to run ASP.NET processes. When a bit in the cpuMask bitmask value is set to 1, the corresponding microprocessor is able to run ASP.NET processes. You need to record the number of bitmasks enabled to convert this to the correct number of application pools.

For example, if cpuMask is set to a value of 0x0d, the equivalent of the binary bit pattern is 1101. If your Web server has four microprocessors, the bitmask value 1101 indicates that you need three worker processes.

Configure the Maximum number of worker processes setting in IIS 6.0 to the number of microprocessors that are enabled in the cpuMask Machine.config attribute. The default value for Maximum number of worker processes is 1, indicating that Web gardens are not enabled.

For more information about how to configure the Maximum number of worker processes setting, see Configure Application Pool Performance.

Migrating the restartQueueLimit Attribute

The restartQueueLimit Machine.config attribute, which has a default value of 10, specifies the maximum number of requests that will be queued in ASP.NET while waiting for the worker process to recycle after an abnormal termination.

Configure the Limit the kernel request queue to setting in IIS 6.0 to the same value that is configured in the restartQueueLimit Machine.config attribute.

For more information about how to configure the Limit the kernal request queue to setting, see Configure Application Pool Performance.

Note

When application pool queue length limits are enabled, IIS monitors the number of requests for a designated application pool queue before queuing a new request. If adding a new request to the queue causes it to exceed the queue length limit, the server rejects the request and sends a 503-error response (that cannot be customized) to the client. However, requests that are already queued remain in the queue even if the limit is changed to a value that is less than the current queue length.

Migrating the idleTimeout Attribute

The idleTimeout Machine.config attribute, with a default value of infinite, specifies the maximum number of minutes that a worker process can be inactive before it is automatically shut down by ASP.NET. The attribute is a string value in the format of hr:min:sec. To configure this value in IIS 6.0, you need to convert this format to time in minutes.

Configure the Shutdown worker processes after being idle for setting in IIS 6.0 to the same time value, in minutes, that is configured in the idleTimeout Machine.config attribute.

For more information about how to configure the Shutdown the worker processes being idle for setting, see Configure Application Pool Performance.