.Net Applications by Framework Test

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 ASP .Net Applications 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.

Target of the test : An IIS web server

Agent deploying the test : An internal agent;

Outputs of the test : One set of results for every ASP .Net application/application domain on a monitored ASP .Net server

Configurable parameters for the test
  1. TEST PERIOD - How often should the test be executed.
  2. Host - The host for which the test is to be configured.
  3. Port - The port to which the specified host listens.
Measurements made by the test
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 turnover 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 succeeded

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.

Number 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 connections

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 server connections

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.

Abandoned ASPNet application sessions

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.

Active ASPNet application sessions

Indicates the currently active sessions on this AppDomain/application.

Number

This is a good indicator of the current session load on the AppDomain/application.

Timedout ASPNet application sessions

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.

ASPNet application sessions

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.

Request execution time

Indicates the time for which the most recent request i.e., the last request was waiting in the queue.

Seconds

 

Error rate

Indicates the rate at which errors occurred while the request was being processed.

Errors/sec