4

I am seeing the following suspicious behavior on one of our web servers (IIS 6.0 on win2k3). two CPUs hyperthreaded into 4.

In task manager and perfmon the w3wp.exe's cpu utilization does appear to be floored at 25%. By floored I mean, cpu utilization never goes below that number, and sticks at that value even when the server handles no requests. Furthermore looking at the performance tab in task manager, the utilization of the individual cpus fluctuates widely, but the overall cpu utilization stays constant at 25%. I.e. the widely varying values from the for cpus just happen to always add up to 25%.

To me there appears to be something wrong with these counters. It counts as if 1 cpu (of the 4) is completely utilized, when in fact it might not be.

Any idea what might be going on there? Anyone seen something similar before? (another machine in the same cluster exhibits similar behavior, just that it has w3wp.exe counted as consuming 50% of the cpu, again with virtually no traffic).

Thanks

3 Answers3

1

I would take a long-duration perfmon counter reading, and then run it through the PAL tool. See what it brings up.

Jeff Costa
  • 481
  • 3
  • 9
0

It sounds like you may have processor affinity enabled. That will bind a worker thread to a particular CPU. If you have a quad core server then the 25% would make sense. My recommendation is to create a fresh app pool, move the site to it, and see if the pattern changes.

As for what is causing the CPU in the first place, is there any possible page or site that could be getting called? Try recycling the app pool and see if it occurs immediately or not. If you can, break sites into more app pools to find out which site is causing it so that you can narrow down the offending page.

Scott Forsyth
  • 16,339
  • 3
  • 36
  • 55
  • processor affinity would result in a ceiling of 25%, right? not a floor. –  Oct 14 '09 at 16:27
  • Good catch, I read that too quickly I guess, although there is a slight chance it could be from that if one of the threads uses up 100% of its available resources, essentially 25% of the total CPU resources. The other normal usage would just add to the 25%. I've never seen IIS itself use CPU like that for no reason, so it most likely is some webpage somewhere that is being called and causing the runaway CPU. The trick is to narrow it down and find out which page is running. It's very easy in IIS7 but more difficult in IIS6. IISState or Process Monitor are good tools to help with this. – Scott Forsyth Oct 14 '09 at 16:58
  • sorry for not having graded this answer yet. I haven't had a chance to iisreset the production server yet. And I am still of the believe that this is more a perfcounter issue, than an IIS issue. –  Oct 20 '09 at 18:20
0

Look at the number of worker processes (usually 1), and increase to 2-3, if it makes sense. Then if you look at IIS Manager and go to the App pool you think is wreaking havoc, select application pool defaults, and set CPU to a percentage to like 70%, instead of 0 (unlimited), then set Limit Action to throttle (vice ... No Action) It will help regain control of your out of control CPU demands...