Testing ASP.NET Applications - Specific Server Metrics

Applies to LoadComplete 4.97, last modified on May 20, 2019

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

Highlight search results