HOWTO: Run IIS6 in native Worker Process Isolation Mode


I’ve got a box running fine these days, but now I want to experiment a bit. I have a long-running .asp page and I want to change the application pool settings for it. But when I go to the IIS console, there is no entry in the tree for Applicaiton Pools! I may have done something in the past that got rid of that branch of the tree, but can’t remember now what that might have been.

Any idea how to restore it to it’s previous glory and utility?


It sounds like IIS6 is configured to run in IIS5 Compatibility Mode. This happens when:

  1. You upgrade the server to IIS6
  2. User explicitly configures IIS6 to run in IIS5 Compatibility Mode

Since IIS5 did not have the concept of Application Pools (it was introduced in IIS6), the IIS Manager UI will not show a tree for Application Pools when IIS6 runs in IIS5 Compatibility Mode.

Thus, to use and configure Application Pools, you need to configure IIS6 to run in its native Worker Process Isolation Mode. You do this by:

  1. Right-click properties on the “Web Sites” node in the IIS Manager UI
  2. Select the “Service” tab in the property page
  3. There will be a checkbox controlling whether IIS6 runs “WWW service in IIS5 isolation mode” or not. Uncheck it to have IIS6 run with IIS6 Worker Process Isolation Mode.

    FYI: To switch modes, you must restart IIS.

While I always suggest users to run IIS6 in its native Worker Process Isolation Mode to enjoy the benefits of Application Pools, I am not certain how Application Pools help with your long-running ASP pages. ASP already has a script timeout property which limits the amount of time an ASP page can execute, and it applies regardless of IIS mode. So, unless you intend to detect this long-running ASP page by the amount of memory or CPU it uses, Application Pools do not directly address your issue.

Furthermore, your server may be running in IIS5 Compatibility Mode for other reasons (such as legacy ISAPI Filters/Extensions) and switching modes may break things. Bottom line – you must figure out yourself what mode to configure IIS6 to run in.


Comments (4)

  1. Phillip LeMaster says:

    We have issues where the worker process runs out of memory or gfet a memory exception error.  currently we are running with 2GB RAM IIS6 .net 1.1  If we use the /3gb switch in the boot.ini will this provide more memory to the w3wp process?

  2. David.Wang says:

    Philip – No, before you think about /3GB, can you tell me what is the memory usage profile for your applications?

    You want to look at WHY you are getting memory exception errors and not blindly "give more memory address space" because that may not be the problem at all. /3GB allows more user mode address space in return for halving kernel mode address space, which is its own set of compromises.

    In general, you want to figure out why your applications need so much memory and fix that problem. Changing system parameters are merely work-arounds – suppose your application has a memory leak – after you give /3GB it will STILL eventually throw out of memory exceptions – now what? If you troubleshoot now and identify the issue, you can truly resolve it If you use /3GB, you just get the same problem later, and you have no alternatives at that point.


  3. Casey says:

    Thanks for the post. It helped me out. I unchecked compatibility mode and still didn’t see the app pools tree item. Then I read this and saw I needed to restart iis.

  4. Rajiv says:

    I am using an ASP net application which runs on W3wp service, The application seems to be very slow in the morning time and the I/O utilization is getting to peaks at this time but the CPU utilization remains to be 20-30%.We have set the application pooling setting as Virtual memory recycling to 1750(in minutes).The system virtual memory is set to 22448bytes.Kindly suggest me a solution.