eG Monitoring
 

Measures reported by AspDotNetAppTest

NET introduces the concept of an application domain, or AppDomain. Like a process, the AppDomain is both a container and a boundary. The .NET runtime uses an AppDomain as a container for code and data, just like the operating system uses a process as a container for code and data. As the operating system uses a process to isolate misbehaving code, the .NET runtime uses an AppDomain to isolate code inside of a secure boundary. An AppDomain belongs to only a single process, but a single process can hold multiple AppDomains.

An AppDomain is relatively cheap to create (compared to a process), and has relatively less overhead to maintain than a process. For these reasons, an AppDomain is a great solution for the ISP who is hosting hundreds of applications. Each application can exist inside an isolated AppDomain, and many of these AppDomains can exist inside of a single process.

From this, it can be inferred that to understand how well an application is performing, it is necessary to monitor the AppDomain in which that application exists. This involves the following:

  • Tracking the requests to the AppDomain, measuring the time taken by the AppDomain to service the requests, and keeping an eye on the pending requests count on the AppDomain;

  • Understanding how the AppDomain uses its cache and isolating irregularities in cache usage or sizing;

  • Monitoring the session load on the AppDomain and measuring the efficiency of the AppDomain in handling this load;

  • Capturing errors encountered by the AppDomain.

The AspDotNetAppTest test performs all of the above for every AppDomain on the monitored ASP .Net server. This way, the test proactively alerts administrators to potential request processing bottlenecks in any AppDomain, promptly identifies the AppDomain that is utilizing its cache ineffectively, instantly captures errors (if any) in the AppDomain and brings them to the notice of administrators, and rapidly notifies administrators if any AppDomain is overloaded with sessions or is abandoning/timing out sessions at a brisk pace.

The measures made by this test are as follows:

Measurement Description Measurement Unit Interpretation
Cache_total_entries The current number of entries in the cache (both User and Internal) of this AppDomain/application. Number  
Cache_hit_ratio The current hit-to-miss ratio of all cache requests (both user and internal) to the cache of this AppDomain/application. Percent Physical I/O takes a significant amount of time, and also increases the CPU resources required. The server configuration should therefore ensure that the required information is available on the memory. A low value of this measure indicates that physical I/O is greater.
Cache_turnover_rate The number of additions and removals per second (both user and internal) to the cache of this AppDomain/application. Cached/Sec A high turnover rate indicates that items are being quickly added and removed, which can be expensive.
Cache_api_entries The number of entries currently in the user cache of this AppDomain/application. Number  
Cache_user_hit_ratio Total hit-to-miss ratio of requests to the user cache of this AppDomain/application . Percent A high value of this measure is indicative of the good health of the server.
Cache_user_turnover_rate The number of additions and removals per second to the user cache of this AppDomain/application. Cached/Sec A high turnover rate indicates that items are being quickly added and removed, which can be expensive.
Output_cache_entries The number of entries currently in the Output Cache of this AppDomain/application. Number  
Output_cache_hit_ratio The total hit-to-miss ratio of requests to the Output Cache of this AppDomain/application. Percent A high value of this measure is a sign of good health.
Output_cache_trnover_rate The number of additions and removals per second to the Output Cache of this AppDomain/application. Cached/Sec Output caching allows you to store dynamic page and user control responses on any HTTP 1.1 cache-capable device in the output stream, from the originating server to the requesting browser. On subsequent requests, the page or user control code is not executed; the cached output is used to satisfy the request.

Sudden increases in the value of this measure are indicative of backend latency.
Compilation_total The total number of compilations that have taken place during the lifetime of the current Web server process. This occurs when a file with a .aspx, .asmx, asax,.ascx, or .ashx extension or code-behind source files are dynamically compiled on the server. Number  
Processing_errors The rate at which configuration and parsing errors occur on this AppDomain/application. Errors/Sec A consistent increase in the value of this measure could prove to be fatal for the application domain.
Compilation_errors The rate at which compilation errors occur on this AppDomain/application. Errors/Sec The response is cached, and this counter increments only once until recompilation is forced by a file change.
Runtime_errors The rate at which run-time errors occur on this AppDomain/application. Errors/Sec  
Unhandled_runtime_errors The rate of unhandled runtime exceptions on this AppDomain/application. Errors/Sec A consistent increase in the value of this measure could prove to be fatal for the application domain. This measure however, does not include the following:

  • Errors cleared by an event handler (for example, by Page_Error or Application_Error)

  • Errors handled by a redirect page

  • Errors that occur within a try/catch block

Requests_executing The number of requests currently executing on this AppDomain/application. Number This measure is incremented when the HttpRuntime begins to process the request and is decremented after the HttpRuntime finishes the request.
Requests_app_queue The number of requests currently in the application request queue of this AppDomain/application. Number A steady increase in the value of this measure could indicate a request processing bottleneck in the AppDomain.
Requests_not_found The number of requests that did not find the required resource on this AppDomain/application. Number Ideally, the value of this measure should be 0.
Requests_not_authorized The number of requests to this AppDomain/application that failed due to unauthorized access. Number Values greater than 0 indicate that proper authorization has not been provided, or invalid authors are trying to access a particular resource.
Requests_timed_out The number of requests to this AppDomain/application that timed out. Number Ideally, the value of this measure should be 0.
Requests_succeded The rate at which requests to this AppDomain/application succeeded. Requests/Sec  
Request_rate Indicates the number of requests executed per second by this AppDomain/application. Number This represents the current throughput of the application.
Pipeline_instances Indicates the number of active pipeline instances for this AppDomain/application. Number Since only one execution thread can run within a pipeline instance, this number gives the maximum number of concurrent requests that are being processed for a given application. Ideally, the value of this measure should be low.
No_of_errors Indicates the total sum of all errors that occurred during the execution of HTTP requests by this AppDomain/application. Number This measure should be kept at 0 or a very low value.
SQL_srvr_conns Indicates the number of connections to the SQL Server used by session state. Number An unusually high value may indicate a sudden increase in sessions to the SQL Server.
State_srvr_conns Indicates the number of connections to the StateServer used by session state. Number An unusually high value may indicate a sudden increase in sessions to the StateServer.
Sessions_abandoned Indicates the number of sessions on this AppDomain/application that have been explicitly abandoned during the last measurement period. Number Ideally, the value of this measure should be 0.
Sessions_active Indicates the currently active sessions on this AppDomain/application. Number This is a good indicator of the current session load on the AppDomain/application.
Sessions_timed_out Indicates the number of sessions on this AppDomain/application that timed out during the last measurement period. Number Ideally, the value of this measure should be 0.
Sessions_total Indicates the total number of sessions on this AppDomain/application during the last measurement period. Number  
Request_execution_time The number of seconds this AppDomain/application took to execute the last request. Number In version 1.0 of the framework, the execution time begins when the worker process receives the request, and stop when the ASP.NET ISAPI sends HSE_REQ_DONE_WITH_SESSION to IIS. In version 1.1 of the framework, execution begins when the HttpContext for the request is created, and stop before the response is sent to IIS. The value of this measure should be stable. Any sudden change from the previous recorded values should be notified.