Which w3wp.exe process belongs to which App Pool in IIS6
Scott Forsyth
October 1, 2004
Along with Windows Server 2003 and Internet Information Services 6.0 came a large
number of benefits. For us IIS admins, it was a great welcome set of changes. But,
one apparent difficultly is matching up the w3wp.exe processes displayed in Task
Manager to the Application Pools in IIS.
Review of IIS5
In IIS5.0 (Windows 2000 Server), each site that is set to Out Of Process will spin
up a new instance of dllhost.exe. Windows Task Manager lists them. Now, the trick
is to find out which dllhost.exe matches which site. My favorite way is to use Component
Services. To do so, open Component Services from Administrative Tools, drill down
to Computers -> My Computer and select COM+ Applications. Now select View from
the top menu and select Status. Beside each site that currently has a dllhost.exe
process spun up is the Process ID (PID). Using Task Manager, you can tell the memory
and CPU.
Note: If the Process ID doesn't display for you in Task Manager, select View ->
Select Columns and add it.
What about IIS6?
But, that doesn't work anymore with IIS6.0. Now each site in IIS6 is placed in an
Application Pool. Each Application Pool is completely separated from other App Pools
by running in its own process called w3wp.exe. This make life SO much easier. Now,
the trick is to match up the process shown in Task Manager with the Application
Pool set up in IIS.
If there is a different user for each application pool, Windows Task Manager is
the easiest way to find out which application pool belongs to which site since Task
Manager will display the user the process runs as.
But, what happens if you have multiple application pools running as the same user?
For example, if you keep to the default NETWORK SERVICE user but create multiple
Application Pools, you may want to know which process belongs to which App Pool.
Component Services doesn't work for this anymore.
Enough already, tell me how to do it!
Have no worries, Microsoft has given us the exact tool for the situation. IISApp.vbs
lists all the applications, their PID and their App Pool name.
The script is already placed in systemroot\system32 on Windows Server 2003 so simply
go to your Command Prompt and type in iisapp.vbs (the .vbs is optional) and you'll
have an instant list of all the App Pool information you've always wanted to know.
You may need to type cscript iisapp.vbs if CScript isn't your default WSH script
host.
Let's see an example of the output:
W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com
Direct from the horse's mouth, Microsoft documents this:
http://www.microsoft.com/resources/documentation/WindowsServ/2003
Summary
We've seen here that using iisapp.vbs, you can painlessly match up the PID to the
friendly name of the Application Pool.
Scott Forsyth is Director of IT with
ORCS Web, Inc.
- a company that provides managed hosting solutions for clients who develop and deploy their applications on Microsoft Windows platforms. Services include shared hosting, dedicated hosting, and webfarm hosting, with specialty in .Net, SQL Server, and architecting highly scalable solutions.