Essential ASP.NET Performance Counter

For list of others essential performance counters for applications based on Windows platform see here.


When there is a requirement of collecting performance counters during performance testing, it becomes tough to select few counters from existing many.  All counters are important in its context and cannot be simply ignored.  So, it is very important to recheck the list of counters that needs to be monitored before every performance run.  You might need to change the counters as per yours requirements.

Following are some of the ASP.NET counters, that I find bare essential to start with though.  These counters are related to specific web applications and not system wide, which have been ignored intentionally.  The list of counters and its preferred  / threshold values are being collected from multiple relevant blogs / links and have been mentioned in the ‘References’ section below.


Performance Object
Performance Counter
Preferred Value
Cache API Counters
Cache API Hit Ratio
> 80%
Cache API Turnover Rate
None
Errors Counters
Errors during Execution
None
Errors Unhandled During Execution/sec
None
Output Cache Counters
Output Cache Hit Ratio
None
Output Cache Turnover Rate
None
Requests Counters
Requests in Application Queue
None
Requests / sec
None
Miscellaneous Counters for ASP.NET Applications
Pipeline Instance Count
None


Cache API Counters

Cache API Hit Ratio
It indicates ratio of cache hits to misses of objects called from user code.
Preferred Value:  Greater than 80%
Threshold Value:  See preferred value
Notes:
  1. A low ratio can indicate inefficient use of caching techniques in the program.
  2. This counter does not track use of the cache internally by ASP.NET
  3. With sufficient RAM, you should normally record a high (greater than 80 percent) cache hit ratio.
 Cache API Turnover Rate
The number of additions to and removals from the cache per second, when it is used through the external APIs (excluding internal use by the ASP.NET framework)
Preferred Value:  None
Threshold Value:  None
Notes:
  1. A high turnover rate indicates that items are being quickly added and removed, which can be expensive.
  2. High turnover suggest inefficient utilization of cache.  Cache API hit ratio can be greater than 90% but if turnover rate is high then it's an indication of inefficient utilization of cache.

Errors Counters

Errors during Execution
The total number of errors that occurred during the execution of an HTTP request
Preferred Value:  None
Threshold Value:  None
Notes:
  1. It excludes parser and compilation errors though.
  2. It indicates failure during run-time and should be monitored.
  3. Correlate it with ‘Errors Unhandled during Execution / sec’ to find out if application is handling negative flows with the help of catching / throwing exceptions.

Errors Unhandled During Execution/sec

The total number of unhandled exceptions per second at run time
Preferred Value:  None
Threshold Value:  None
Notes:
  1. Unhandled exceptions are more problematic in terms of performance.


Output Cache Counters

Output Cache Hit Ratio
The percentage of total requests that were serviced from the output cache
Preferred Value:  None
Threshold Value:  None
Notes:
  1. The total hit-to-miss ratio of Output Cache requests.
Output Cache Turnover Rate
It indicates the number of additions and removals to the output cache per second
Preferred Value:  None
Threshold Value:  None
Notes:
  1. A high turnover rate indicates that items are being quickly added and removed, which can be expensive.


Requests Counters

Requests in Application Queue
The number of requests in the application request queue
Preferred Value:  None
Threshold Value:  None
Notes:
  1. In addition to Requests Current, Requests in Application Queue provides a warning for when requests will be rejected.
  2. If there are only a couple virtual directories, increasing the default appRequestQueueLimit to 200 or 300 may be suitable, especially for slow applications under heavy load.
  3. Presence of queue most of the time suggests performance issues, so if queue is not decreasing or increasing further investigation is required.
Requests/sec
The average number of requests that have been executed per second
Preferred Value:  None
Threshold Value:  None
Notes:
  1. This counter represents the current throughput of the application.
  2. Correlate this counter with number of requests from clients and find out if it is decreasing / increasing accordingly. If not, then it needs to be analyzed.

Miscellaneous Counters for ASP.NET Applications

Pipeline Instance Count
The number of active request pipeline instances for the specified ASP.NET application.  It represents the maximum number of concurrent requests that are being processed for a specific application.
Preferred Value:  None
Threshold Value:  None
Notes:
  1. Only one execution thread can run within a pipeline instance, this number represents the maximum number of concurrent requests that are being processed for a specific application.
  2. In most circumstances, it is better for this number be low when the server is busy, because this means that the CPU is well used.
  3. The number of pipeline instances should be steady. Sudden increases are indicative of back end latency.


References:
    1.  IIS
    4.  How ASP.NET Works
   

Comments

Popular posts from this blog

Performance Test Run Report Template

Understanding Blockchain

Bugs Management in Agile Project