Volver

Saber que proceso w3wp.exe pertenece a cual AppPool en IIS 6

Traducido desde el Blog de Scott Forsyth's http://weblogs.asp.net/owscott/archive/2004/09/21/Which-w3wp.exe-process-belongs-to-which-App-Pool-in-IIS6.aspx
por Hernaldo González C. - Development Team leader
http://darknromhacking.com
hernaldog@gmail.com
(** Notas del traductor)

Con Windows Server 2003 e Internet Information Services 6.0 se tiene un gran número de beneficios, sobretodo para los usuarios administradores de IIS, ya que viene con un gran número de cambios. Pero a primera vista, se ve una dificultad que es hacer coincidir los procesos w3wp.exe mostrados en el Task Manager con los Application Pools del IIS.


Resumen de IIS 5

En IIS 5.0 (Windows 2000 Server), cada sitio levanta un grupo de instancias del proceso dllhost.exe. Al usar el Task Manager de Windows se pueden ver. Ahora, el truco es encontrar cual dllhost.exe es de que sitio. Mi forma favorita de saberlo es usando Component Services. Para esto, puedes abrir Component Services desde Administrative Tools, anda a Computers -> My Computer y elige COM+ Applications. Ahora elige View desde el menú superior y selecciona Status. Por otra parte, cada sitio que tiene un proceso dllhost.exe también tiene un ID de Proceso (Process ID o PID). Con el Task Manager, puedes saber el uso de la memoria y CPU.

Nota: Si el PID no se muestra en Task Manager, selecciona View -> Selecciona Columns y agrégalo.


¿Y que pasa con IIS 6?

Nada de lo anterior funciona con IIS 6.0. Ahora, cada sitio de IIS 6 se coloca en un Application Pool. Un Application Pool está completamente separado de otros App Pools mientras corre sus propios procesos llamados w3wp.exe. Esto hace la vida MUY fácil. Ahora, el truco es hacer coincidir el proceso mostrado en el Task Manager con el Application Pool del IIS.

Hay un diferente usuario para cada Application pool, con Windows Task Manager es lo más fácil encontrar cual Application pool pertenece a que sitio ya que Task Manager mostrará el usuario que ejecuta el proceso.

Pero, ¿que pasa si un mismo usuario está ejecutando múltiples Application pools? Por ejemplo, si mantienes el usuario NETWORK SERVICE por defecto pero creas múltiples Application Pools, querrás saber cual proceso es que cual App Pool. El Component Services ya no sirve para esto.


¡Estamos listos, dime como se hace!

No se preocupen, Microsoft nos tiene la herramienta perfecta para esta situación. IISApp.vbs lista todas las aplicaciones, su PID y el nombre del App Pool asociado.

El script está en systemroot\system32 en Windows Server 2003, así que tan solo en la ventana de Comandos se debe escribir iisapp.vbs (el .vbs es opcional) y te dará una lista instantánea de toda la información del App Pool que siempre quisiste saber. Debes escribir "cscript iisapp.vbs" si es que CScript no es tu host script WSH por defecto.

Veamos un ejemplo de la salida:

W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPooForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPooForSite3.com


Para más documentación oficial de Microsoft ver:

http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/Default.asp?url=/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/cl_as_viewapps.asp


Resumen

Hemos visto que al usar iisapp.vbs, se puede mostrar gráficamente el PID con el nombre del Application Pool.

**Traducido el 23/07/2010. Comentarios a hernaldog@gmail.com.



Volver

2003-2011