IIS 6.0 Health Monitoring and ASP.NET Applications

IIS 6.0 includes health monitoring for IIS worker processes (w3wp.exe).  Unfortunately, from a .NET developer's perspective, this isn't very useful, and is actually less useful than the health monitoring done by ASP.NET when using IIS 5.0.

IIS 6.0 can monitor for several unhealthy conditions: too much memory consumption, excessive CPU usage, and non responsiveness (failure to echo pings).  There is also this concept of orphaning, where the unhealthy process isn't terminated, it just isn't sent any more work.  Unfortunately, orphaning is only implemented for non responsiveness.  For excess memory or CPU usage, the unhealthy worker is simply terminated.

This creates a situation where there isn't much you can do to investigate excessive memory or CPU usage.  ADPlus doesn't help because a break point exception isn't raised as it was in IIS 5.0.  You can get an attached debugger to break at process shutdown, but by that time almost everything having to do with .NET has already been released.

If you need to troubleshoot excessive memory or CPU usage, you'll need to monitor by some other means than IIS 6.0 health monitoring and break into w3wp.exe by attaching a debugger.  Fortunately, IIS 6.0 is smart enough to suspend pinging when a debugger is attached.

This article is part of the GWB Archives. Original Author: David Douglass

New on Geeks with Blogs

  • We Won The One Award I Actually Care About

    Full Scale made the Inc. 5000 for the fifth year straight, the 12th listing across my three companies. Here is why the one award you cannot buy is worth stopping for.

  • Your Customers Build the Features Now

    I let a tool I liked sit dead for a year rather than build the features I wanted. An MCP server meant I never had to, and your customers can do the same to your product.

  • Get the Size of a Directory in Linux the Easy Way

    du -sh for the quick answer, ncdu for the cleanup, df for the disk itself: every command for checking directory size in Linux, plus why du and df never agree.

  • Vim Search and Replace: The Ultimate Guide

    One :%s command replaces every match in a file before a find dialog would even open. The Vim substitute patterns worth the muscle memory: flags, ranges, capture groups, and multi-file edits.