During the course of working through issues, I get asked at least twice a week how to determine which application pool maps to a particular worker process PID (Process ID) on a server. I suppose there are lots of ways to determine this, but here two that come to mind to determine the answer.
The first way, and by far the easiest, is to use one of the new scripts that come in the box called IISAPP.VBS. It is located in the %SystemRoot%\system32 directory. For example:
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
W3WP.exe PID: 1172 AppPoolId: StsAdminAppPool
W3WP.exe PID: 2656 AppPoolId: MSSharePointAppPool
W3WP.exe PID: 2148 AppPoolId: WMS App Pool
W3WP.exe PID: 3604 AppPoolId: defaultwebsite
As you can see, this script makes it very easy to determine what the PID is of each specific Application Pool. This is nice to use when trying to determine which PID you may want to snap a dump of for debugging purposes.
There are others that are cool as well. For more details on the various other scripts that are also included, see this link. I also encourage you to open a command prompt, navigate to your system32 directory on your IIS6 machine then run a "dir iis*.vbs" command and check out the new scripts.
The second way is a bit more obscure and requires that you run the tlist.exe command, which comes with the Debugging Tools for Windows. Here is an example of that, which is fairly interesting:
|C:\Program Files\Debugging Tools for Windows>tlist -v|
0 1172 w3wp.exe
Command Line: c:\WINDOWS\system32\inetsrv\w3wp.exe -a \\.\pipe\iisipmec19a7d8-c08d-42f4-b2c9-69d7cfe28c74 -ap "StsAdminAppPool"
0 2656 w3wp.exe
Command Line: c:\WINDOWS\system32\inetsrv\w3wp.exe -a \\.\pipe\iisipm4bc52071-9ebb-4e39-9ba5-b256b4be4014 -t 20 -ap "MSSharePointAppPool"
0 2148 w3wp.exe
Command Line: c:\WINDOWS\system32\inetsrv\w3wp.exe -a \\.\pipe\iisipmfa132134-c1ed-47d4-be52-417ce5a59e63 -t 20 -ap "WMS App Pool"
0 3604 w3wp.exe Title: OLEChannelWnd
Command Line: c:\WINDOWS\system32\inetsrv\w3wp.exe -a \\.\pipe\iisipmdd93382a-645a-467c-bdbd-07c3ad6833a4 -t 20 -ap "defaultwebsite"
Note: I snipped all other processes and only left the 4 W3WP.EXE processes that we're interested in.
If you look carefully above, you will see the name of the Application Pool specified directly on the command line for W3WP.EXE! You mean you can call this thing directly? Interestingly enough, there are documented command line options for it. Interesting? No? Bonus points if you can tell me why the last application pool has a Title of "OLEChannelWnd" 🙂
For those interested parties still left reading, here are the command line options for W3WP.EXE that are documented via -?:
Usage: w3wp [options]
This option is required for launching from the command line.
If not provided the app pool name, default url, and site id
will be defaulted to
AppPoolName = StandAloneAppPool
URL list = http://*:80/:80/:80/
Site Id = 1
-ap <Application Pool Name>
Indicates the application pool name
that will queue requests for the
worker process. No other worker processes
with this name can be running at the
same time as this one
-d <URL List>
Indicates the urls to listen to.
Which site are the urls provided associated with.
The site number is used to access data from the metabase
for processing the requests.sts.
Good night...for now.