Take the 2-minute tour ×

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

4 Answers 4

Again...favorite recipe of mine...download 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: http://www.scriptinganswers.com/forum2/forum%5Fposts.asp?TID=3222

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.

http://blogs.msdn.com/tess/ is a great blog on diagnosing production issues.

share|improve this answer

Your Answer


