.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
|
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:
|
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 |
|