Diagnose IIS Performance Problems using Windows Performance Monitor
Diagnose IIS Performance Problems using Windows Performance Monitor
Identifying performance problems in an IIS (Internet Information Services) server and using
Windows Performance Monitor (PerfMon) can help diagnose issues and enhance performance.
Here are steps and key performance counters to monitor for IIS:
Web Service:
o Web Service / Current Connections: Indicates the number of active connections to the
server.
o Web Service / Total Connection Attempts: Shows how often connections are being
attempted.
o Web Service / Get Requests/sec: Monitors the rate of HTTP GET requests.
o Web Service / Bytes Total/Sec: Measures the total bytes sent and received per second.
o Web Service / Post Requests/Sec: Tracks the number of HTTP POST requests.
o Web Service / Active Threads: Total number of threads in use.
.NET CLR:
o .NET CLR / % Time in GC: Indicates the percentage of time spent in garbage collection.
High values might affect performance.
ASP.NET:
o ASP.NET Applications / Requests Queued: Shows the number of requests waiting in the
queue.
o ASP.NET Applications / Request Execution Time: Indicates how long requests are taking
to execute.
o ASP.NET Applications / % Managed Processor Time (estimated): This allows you to get
the estimated CPU time for your specific application, and not the entire IIS application
pool which could be multiple applications.
o ASP.NET Applications / Managed Memory Used (estimated): This allows you to get the
estimated memory usage for your specific application, and not the entire IIS application
pool which could be multiple applications.
o ASP.NET Applications – Errors Unhandled During Execution/sec: You need to know
how many exceptions were unhandled and may have been visible to your users.
Processor:
o Processor / % Processor Time: Measures CPU utilization.
o Processor / % User Time: Indicates the percentage of time the processor spends in user-
mode operations.
o Processor / % Private Bytes: Memory usage of the IIS worker process.
o Processor / % Handle Count: Number of object handles that the process has open.
Memory:
o Memory / Available Mbytes: Monitors available memory on the server.
o Memory / Pages/sec: Tracks the rate at which pages are read from or written to disk.
Disk:
o LogicalDisk / % Free Space: Monitors available disk space.
Analyzing Performance:
Watch for Trends: Look for spikes or consistent high/low values in these counters during
peak times or when performance issues occur.
Compare Against Baselines: Compare current performance with established baselines
during normal operation to identify deviations.
Focus on Bottlenecks: Identify any resource that consistently reaches high utilization
(CPU, memory, disk, network) during the performance issue.
Consider Application-Specific Counters: Depending on the specific application hosted
on IIS, consider additional performance counters that are relevant to your application.
Consider using specialized tools like Microsoft's IIS Diagnostics Toolkit or third-party
monitoring tools for deeper analysis.