ASP.NET Performance Monitoring

Recently we had a performance problem that caused poor response time, in the 10-15 seconds.  We are printing to handheld printers as one of the services which results in a long-running method, but should be able to handle the load we are seeing.

In order to understand the problem we did some performance monitoring to diagnose the problem.  These are the performance metrics that we used for monitoring performance.

Processor Performance (Processor):

  • % Processor Time – The percentage of elapsed time that the processor spends to execute a non-Idle thread.

Memory UsagePerformance (Memory):

  • % Committed Bytes In Use – The ratio of Memory\\Committed Bytes to the Memory\\Commit Limit. Committed memory is the physical memory in use for which space has been reserved in the paging file should it need to be written to disk.
  • Page Faults/sec – Page Faults/sec is the average number of pages faulted per second.

Network Performance (Network Interface):

  • Bytes Received/sec – The rate at which bytes are received over each network adapter, including framing characters.
  • Bytes Sent/sec – The rate at which bytes are sent over each network adapter, including framing characters.
  • Bytes Total/sec – The rate at which bytes are sent and received over each network adapter, including framing characters.


  • Requests Current – The current number of requests, including those that are queued, currently executing, or waiting to be written to the client.
  • Request Execution Time – The number of milliseconds that it took to execute the most recent request.
  • Requests Queued – The number of requests waiting to be processed.
  • Request Wait Time – The number of milliseconds the most recent request was waiting in the queue.
  • Requests Disconnected – The number of requests disconnected due to communication errors or user terminated.
  • Requests Rejected – The number of requests rejected because the request queue was full.

ASP.Net Applications

  • Pipeline Instance Count – The number of active request pipeline instances for the specified ASP.NET application. 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. In most circumstances it is better for this number to be low when under load, which signifies that the CPU is well utilized.

Web Services

  • Current Connections – Current Connections is the current number of connections established with the Web service.
  • Total Method Requests/sec – The rate HTTP requests are received.
  • Bytes Total/sec – Bytes Total/sec is the sum of Bytes Sent/sec and Bytes Received/sec.  This is the total rate of bytes transferred by the Web service.


IIS Debugging Terminated

When debugging web applications I often get distracted or busy working on understanding a problem and after 90 seconds get the message.
The web server process that was being debugged has been terminated by Internet Information Services (IIS). This can be avoided by configuring Application Pool ping settings in IIS.  See help for further detailsThis is caused by IIS monitoring and shutting down unresponsive processes.  The default is 90 seconds, but when debugging it is easy to exceed this time and get the above message.

The simple solution is to disable ping in IIS Advanced settings for the application poll.  This is done by setting “Ping Enabled” to false.  You can also increase the timeout to a longer interval with “Ping Maximum Response Time”.