26 Feb 2008 04:38:19 | Scott Forsyth
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 systemrootsystem32 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 services for clients who develop
and deploy their applications on Microsoft Windows platforms.
About Author :
Scott Forsyth is Director of IT with ORCS Web, Inc. - a company
that provides managed hosting services for clients who develop
and deploy their applications on Microsoft Windows platforms.