Monitoring ASP Performance

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

If you are running ASP pages on your server, the counters listed in Table 6.25 can help you determine how well the applications are performing. These counters provide the sum of the ASP performance counters for all processes hosting ASP; the data cannot be broken down by process. For information about monitoring the performance of your ASP.NET applications, see Monitoring ASP.NET Performance.

Table 6.25 Counters Used to Monitor ASP Performance

Object\Counter Value

Active Server Pages\Requests/sec

The number of ASP responses during the past second. This counter excludes requests for static files or other dynamic content, and can fluctuate considerably based on the complexity of the ASP pages and the capacity of your Web server.

Active Server Pages\Requests Executing

The number of ASP requests currently executing (for example, the number of active worker threads).

Active Server Pages\Request Wait Time

The number of milliseconds that the most recent ASP request was waiting in the queue.

Active Server Pages\Request Execution Time

The number of milliseconds that the most recent ASP request took to execute. This value can be somewhat misleading because it is not an average.

Active Server Pages\Requests Queued

The number of queued ASP requests that are waiting to be processed. The maximum number for this counter is determined by the metabase property AspRequestQueueMax.

Analyzing the Data

The Active Server Pages\Requests/sec counter excludes requests for static files or other dynamic content, and can fluctuate considerably based on the complexity of the ASP pages and the capacity of your Web server. If this counter is low during spikes in traffic on your server, your applications might be causing a bottleneck.

It is difficult to give an ideal value for the Active Server Pages\Requests Executing counter. Some factors to consider include:

  • If pages execute quickly and do not wait for I/O (for example, loading a file or making a database query), the number of ASP requests that are currently executing is likely to be low — little more than the number of processors when the computer is busy.

  • If pages must wait for I/O, the number of pages executing is likely to be higher —up to the maximum thread count allowed for an ASP processor (set by the AspProcessorThreadMax metabase property) multiplied by the number of processors, multiplied by the number of processes hosting ASP. (The default AspProcessorThreadMax value is 25.)

  • If the Requests Executing counter value equals the value of the AspProcessorThreadMax property, if Requests Queued is large, and if CPU usage is low, you might need to increase the value of the AspProcessorThreadMax metabase property.

    Important

    The value of the AspProcessorThreadMax Metabase Property can significantly influence the scalability of your Web applications and the performance of your server. Before changing the setting, be sure to read about this property and its use.

The Request Execution Time counter can be misleading because it is not an average. For example, if you regularly receive 30 requests for a page that executes in 10 milliseconds (ms) to every one request for a page that executes in 500 ms, the counter is likely to indicate 10 ms even though the average execution time is over 25 ms.

Ideally, the Requests Queued and Request Wait Time counters remain close to zero; however, they can vary under varying loads (depending on the application) while the server still provides good performance. If these numbers vary too much from their expected range, you might need to rewrite your ASP applications. If the queue size and wait time increase, or if the queue limit is reached, browsers display the message HTTP 500/Server Too Busy.

For more information about ASP performance counters, including additional ASP counters, see IIS 6.0 Performance Counters.