IIS Monitoring
Monitor IIS application pool recycling, HTTP.SYS request queue depth, w3wp.exe per-pool CPU and memory, ASP.NET request execution time,.NET CLR GC pressure in real time.
Why monitor IIS?
IIS runs the .NET ecosystem — ASP.NET, SharePoint, Exchange, MS Dynamics, and custom Windows workloads. Application pools recycle silently, HTTP.SYS queues fill, and 503s appear without obvious cause. Monitoring exposes the actual trigger so you stop debugging from event logs after the fact.
IIS monitoring, explained
IIS monitoring catches application-pool recycling storms, HTTP.SYS request-queue buildup, and 503 trips before they hit your users — including the unexpected recycles that always seem to happen at 3am. For ASP.NET workloads on Windows Server, per-pool visibility is the difference between debugging a one-line event-log entry and triaging an opaque outage. Xitoring runs as a native Windows agent, reads the same Performance Monitor counters and routes alerts to your existing on-call rotation.
What we monitor
Current Connections (Web Service)
Active client connections per site, from the `Web Service` PerfMon category. The first number to watch for connection saturation.
Get/Post Requests / sec
HTTP request throughput per site, broken down by method. Sudden Get vs Post divergence often signals scraping or form-spam attacks.
Bytes Sent / Received per sec
Network throughput per site. Correlates with connection-state metrics to surface bandwidth-bound vs request-rate-bound bottlenecks.
ArrivalRate (HTTP.SYS Queue)
Rate of requests entering the kernel-mode HTTP.SYS queue — counted before user-mode w3wp picks them up. Spikes here precede every 503 storm.
CurrentQueueSize
Requests currently waiting in the HTTP.SYS queue per app pool. Sustained non-zero values mean workers can't keep up with arrivals.
RejectedRequests
Requests HTTP.SYS dropped because the queue exceeded its limit. Any non-zero rate is a hard signal to scale workers or raise the queue limit.
App Pool Status & Recycling
Per-pool health state and recycling cause (timer, request count, memory threshold, Rapid-Fail Protection). Unexpected recycles point at memory leaks or upstream failures.
ASP.NET Request Execution Time
Average time ASP.NET spends running each request, separate from queuing. Diverging from Service Uptime baseline localizes latency to app code vs infrastructure.
ASP.NET Requests Queued
Requests waiting on the managed ASP.NET worker queue (separate from HTTP.SYS). High values point to thread-pool starvation in CLR-bound workloads.
.NET CLR % Time in GC
Percentage of CPU spent in garbage collection per worker. Above 5–10% means GC pressure is driving latency — track with Gen 0/1/2 collection counts.
w3wp.exe CPU / Working Set
Per-worker CPU usage and resident memory from the `Process` PerfMon category. Tagged by app pool so you see which workload is consuming what.
HTTP 4xx / 5xx per sec
Error rate per site. A 5xx spike with stable request rate points at app-pool failures or backend dependencies, not traffic.
Configurable alert triggers
Set up custom triggers in your dashboard to get notified the moment IIS metrics cross your defined thresholds.

Request Queue
criticalFires when queue depth exceeds threshold, indicating processing bottleneck.
App Pool Recycling
warningAlerts when application pool recycles unexpectedly.
HTTP Error Rate
warningTriggers when error rate spikes.
Worker Process CPU
criticalFires on high CPU usage in worker processes.
Active Connections
warningAlerts when connections approach server limits.
Importance of IIS Monitoring
IIS runs mission-critical.NET applications and corporate intranets. Without monitoring, application pool crashes, queue buildup, and memory leaks can cause outages.
- Detect app pool crashes before users are affected
- Monitor request queues to prevent timeouts
- Track worker process memory to prevent leaks
- Identify HTTP error spikes early


Why Choose Xitoring
Native Windows Server support with easy installation and enterprise-grade monitoring.
- Native Windows installer
- 15+ global monitoring nodes
- Unified dashboard for all services
- Multi-channel alerting
- Historical data retention


Common IIS monitoring scenarios
Where IIS typically runs today — and what could go wrong if no one's watching.
Established .NET business apps
Long-running .NET apps tend to develop slow memory leaks that surface only at the worst times — overnight restarts, mysterious slowdowns, weekend incidents. We track the early signs so the team can fix the root cause on their schedule, not the app's.
Modern .NET apps in production
Newer .NET apps run more of their code directly inside the web server, which means an app issue can take the whole site down faster. We watch the app and the web server as one unit so problems get isolated to the right layer immediately.
Front door for SharePoint, Exchange, or internal sites
When IIS is the gateway to enterprise apps like SharePoint or Exchange, an outage stops the whole company. We catch the signs of an overloaded gateway or a failing backend so the team can intervene before staff start filing tickets.
Prerequisites for IIS
Make sure you've got these in place — most installs are a 60-second job once they are.
- Windows Server 2016 / 2019 / 2022 / 2025 with the IIS role installed
- IIS performance counters enabled (
Web Service,HTTP Service Request Queues,ASP.NET,.NET CLR Memory,Process) - Administrator access to install the Xitogent Windows agent
Get started in minutes
Install Xitogent on your IIS host
Run the Xitogent Windows installer on the IIS server. The MSI registers Xitogent as a Windows service with permission to read IIS Performance Counters.
# Download from https://xitoring.com/install.exe
# Run the installer as AdministratorVerify IIS Performance Counters
IIS exposes runtime metrics through Windows Performance Counters. Confirm the Web Service counter class is present by running `Get-WmiObject Win32_PerfFormattedData_W3SVC_WebService -filter "Name='_Total'"` in PowerShell. If the class is missing, run `install-windowsfeature web-common-http`.
xitogent integrateEnable the IIS integration
Use the Xitoring dashboard or CLI to enable the IIS integration. Xitogent enumerates each application pool and site automatically, so per-pool metrics are available without further setup.
Configure alert thresholds (optional)
Set custom thresholds for Request Queue Length, App Pool Recycling, or HTTP Error Rate to catch capacity and stability issues per pool.
Verify it's working
Run this command on the server to confirm Xitogent picked up the integration. Fresh metrics will start streaming to your dashboard within ~30 seconds.
sudo xitogent statusConsidering alternatives?
See how Xitoring stacks up against the alternatives for IIS monitoring — flat pricing, deeper integrations, and one agent that covers your whole stack.
Frequently asked questions
What is IIS monitoring?
How do I enable IIS performance counters?
How do I monitor application pool recycling?
What is the difference between IIS classic and integrated pipeline?
How do I monitor the HTTP.SYS request queue?
How do I monitor ASP.NET Core apps hosted on IIS?
What causes HTTP 503 Service Unavailable in IIS?
Can I monitor IIS on Windows Server Core?
How often are metrics collected?
Start monitoring IIS today
Set up in under 60 seconds. No credit card required. Full metrics from day one.
Start Free Trial



