To better estimate the tested web site performance, you can monitor various server metrics with LoadComplete. Microsoft .NET Framework and ASP.NET offer a great number of counters for ASP.NET web sites. In this topic we would like to describe ASP.NET-specific counters that will help analyze various aspects of your ASP.NET application behavior.
Metrics to Measure
To analyze the performance of tested ASP.NET applications, you can measure the following metrics:
-
Transfer speed - The number of requests executed per second, the number of requests waiting to be executed and the number of requests being rejected.
- Queues - The rates of the worker process and virtual directory queues.
- Request execution time - The amount of time it takes the request to be processed and transferred to the client.
- Use of cache - The rate of cache hits and cache misses on the server.
- Number of errors and exceptions - The number of errors and exceptions the server generates.
- Loaded assemblies and domains - The number of loaded assemblies and application domains.
- Number of worker process restarts - The number of times the ASP.NET worker process restarts.
Below you can find information about counters that will help you estimate these metrics for your web site.
You need to add these counters to your project in order for LoadComplete to be able to monitor them.
Counters
You select the counters to be monitored on the Counters page. All the counters can be organized into several categories.
Transfer Speed
-
Requests/sec
Category: ASP.NET Applications
The number of requests processed by the site per second.
-
ISAPI Extension Requests/sec
Categories: Web Service
The number of requests that are currently processed by the web site’s ISAPI extensions.
-
Requests Current
Category: ASP.NET
The total number of requests that are being processed by the web site. This number includes queued requests, requests being processed and requests that are waiting to be sent to the client.
-
Requests Executing
Category: ASP.NET Applications
The number of requests that the web site is currently processing.
-
Requests Timed Out
Category: ASP.NET Applications
The number of requests that were not processed because their waiting time is over. The number is the sum of timed out requests for all ASP.NET applications running on the web site.
Queue
-
Requests Queued
Category: ASP.NET
The number of requests that are currently queued by the site. These requests indicate a shortage of I/O threads or a shortage of ASP.NET worker threads.
-
Requests In Application Queue
Category: ASP.NET Applications
Each ASP.NET application has its queue. This counter indicates the total number of requests in the applications’ queues on the tested site.
-
Requests Rejected
Category: ASP.NET
The number of requests that were rejected by the tested web site because the queue was full.
-
Request Wait Time
Category: ASP.NET
The time the latest request spent in the queue (in milliseconds).
Request Execution Time
To determine the response time, you can use the Time to First Byte and Time to Last Byte counters:
-
Time to First Byte - The time passed between the first byte of the user request and the first byte of the server response.
-
Time to Last Byte - The time passed between the first byte of the user request and the last byte of the server response.
These counters are available by default. There is no need to add them to the list of available counters via the Add Counter dialog.
These counters measure the time on the client side. Their values include the time of transmitting data to and from the server. If you need to get the time the server spends processing requests, use the following counter:
-
Request Execution Time
Category: ASP.NET
It specifies the number of milliseconds it takes the server to execute a request. This is the server time only; it does not include the data transmitting time. See also Knowing Request Processing Time.
Cache
-
Cache Total Entries
Category: ASP.NET Applications
The current number of user and internal cache entries.
-
Cache Total Hit Ratio
Category: ASP.NET Applications
The percent of user and internal hits on the cache. If the server has enough RAM, you will typically observe a high ratio (more than 80%).
-
Cache Total Turnover Rate
Category: ASP.NET Applications
The number of user and internal additions and removals from the cache per second. High rates indicate that data in the cache is being updated frequently, which can impact the web site performance.
-
Cache API Hit Ratio
Category: ASP.NET Applications
The percent of cache hits made from user code. Low rates can indicate insufficient use of the cache.
-
Cache API Turnover Rate
Category: ASP.NET Applications
The number of additions to and removals from the cache made from the user code. High rates indicate that the cache is being updated frequently, which can impact the site performance.
-
Output Cache Entries
Category: ASP.NET Applications
The current number of entries in the output cache. Low rates indicate that you need to identify the cache entries and reconsider your caching mechanism.
-
Output Cache Hit Ratio
Category: ASP.NET Applications
The ratio of hits for the output cacheable requests.
-
Output Cache Turnover Rate
Category: ASP.NET Applications
The number of additions and removals for the output cache per second. High rates indicate that the cache is being updated frequently, which can impact the web site performance.
Errors and Exceptions
-
Errors Total/sec
Category: ASP.NET Applications
The number of exceptions that occurred per second while the server was functioning. This number includes exceptions that occur at all steps of request processing (preprocessing, parsing, compilation and so on).
-
Errors During Execution
Category: ASP.NET Applications
The total number of exceptions that occurred during request execution.
-
Errors Unhandled During Execution/sec
Category: ASP.NET Applications
The number of exceptions handled by the default exception handler (but not by user code) per second.
Assemblies and Application Domains Loaded
-
Current appdomains
Category: .NET CLR Loading
The number of application domains loaded into memory by the tested web site.
-
Current Assemblies
Category: .NET CLR Loading
The current number of assemblies loaded by all application domains. By default, ASP.NET pages and user controls can take from one to three assemblies. These assemblies cannot be unloaded from the application domain. A high number of loaded assemblies may cause excessive consumption of RAM.
-
Bytes in Loader Heap
Category: .NET CLR Loading
The size of committed memory (in bytes) in all application domains. Committed memory is the physical memory for which space is reserved in the operating system’s page file.
Worker Process Restarts
-
Worker Process Restarts
Category: ASP.NET
The number of times the ASP.NET worker process recycles.
Including Counters Into Monitoring Tasks
For information on how to add these counters to runtime graphs, see Managing Server-Side Performance Counters.
See Also
Typical Use Cases
About Server Monitoring
Server Monitoring
Managing Server-Side Performance Counters
About Test Results