Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a few ASP.NET web applications running on IIS 6. Today my CPU usage from IIS is very high and normally it doesn't even register. How can I troubleshoot this issue?

Edit: I have narrowed this issue down to 1 web application using App Pools as suggested, I have procmon and proc explorer running and am seeing what I can figure out with that.. This is a pretty constant cpu usage.

I can't say we have the most up to date patches, unfortunately I am not in control of that but I do have administrative privileges.

share|improve this question

Again...favorite recipe of sysinternals and use procmon, filemon/regmon to see if something is getting hammered there. Use process explorer to see if there are anomalous files open from the open file handle list.

Is there anything showing up in the logs for IIS?

If it's something with processing a particular file or script you might get a hint from the open file handles function from process explorer.

What kind of content is IIS serving when this happens?

And, of course...latest updates/service packs applied?

share|improve this answer

If you have administrative and Remote Desktop access to the server, you can use a script that matches w3wp.exe processes with the IIS 6 application pool to which it belongs (example below). Therefore, if you find a certain app pool that is taking too much RAM or processor, you can look at what applications are running in that pool and start narrowing them down. We've performed similar troubleshooting time and again and eventually took a single problematic app pool and separated the 3 apps in it into their own app pools because they were causing memory issues together. Between that and the developers optimizing code, the problem was solved. If your website is making database calls, you may also want to take a look at the connection between the 2 servers to ensure you're not experiencing timeouts that are causing some CPU spikes.

I wrote an example HTA that will enumerate app pools as I specified. You may find that HTA here:

share|improve this answer

are you running multiple websites in their own application pools?

share|improve this answer

I use debugdiag, which is a free download from M$. You can have it wait for a hang or run it on demand. You can then analyze the dump using its tool, or use winDBG. is a great blog on diagnosing production issues.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.