Imagínate la situación: tu servidor web alberga decenas de aplicaciones Web. de repente un día notas que el servidor está al límite de sus posibilidades, con el procesador al 100% todo el tiempo, y sin saber porqué. Abres el administrador de tareas del servidor y ves que un proceso W3WP.exe es el que está haciéndose con el procesador.

Así que una de tus aplicaciones Web está desmadrada y se empieza a comer todos los recursos de proceso, haciendo que las demás vayan cada vez más lentas. Pero hay decenas de w3wp.exe funcionando porque tienes decenas de aplicaciones, así que ¿cómo diablos averiguas cuál de ellas es la aplicación problemática?

Vale, lo primero es averiguar el identificador del proceso que se está comiendo los recursos del procesador oniéndolo al 100% todo el tiempo. Para ello, en el administrador de tareas (CTRL+MAYS+ESC) vas al menú Ver·Seleccionar Columnas y añades este campo a la lista de procesos, ya que no viene por defecto:

Una vez que ya sabes el identificador del proceso ya tienes mucho camino andado :-)

Lo siguiente es averiguar a qué grupo de aplicaciones está asociado el proceso. Como sabrás, un grupo de aplicaciones o AppPool, es (simplificando) un modo de agrupar aplicaciones web en IIS que están relacionadas, de modo se aislen de otros grupos de aplicación. De este modo se pueden gestionar independientemente y cuando un grupo de aplicaciones tiene problemas no afecta a las aplicaciones que están en los demás grupos de aplicaciones.

Cada proceso de IIS (w3wp.exe) se corresponde con un grupo de aplicaciones. Por lo tanto sabiendo el ID de proceso si tuviésemos un modo de averiguar a qué grupo de apliaciones se corresponde ya sabríamos qué aplicación está dando problemas (por que, claro está, tú separas cada aplicación de tu servidor a su propio grupo de aplicaciones ¿verdad?).

En IIS 6.0 (el que viene con Windows Server 2003) tenemos una utilidad de Windows Scripting Host llamada iisapp.vbs que sirve precisamente para esto. Se encuentra en C:\Windows\System32 o equivalente, así que abrimos una línea de comandos y escribimos:

cscript.exe iisapp.vbs

Eso nos devuelve algo similar a esto (he ocultado el nombre de los "culpables", porque son conocidos):

Mirando esta lista sabremos perfectamente cuál es el grupo de aplicaciones que está desmadrado, por lo que sabremos con precisión cuál es la aplicación que tiene un problema y produce esta situación (por que, repito, tú separas cada aplicación de tu servidor a su propio grupo de aplicaciones ¿verdad?).

En IIS 7.0 (el que viene con Windows Server 2008 o Vista), esta utilidad no existe y ha sido sustituida por una herramienta mucho más potente llamada AppCmd.exe que encontrarás en C:\Windows\System32\InetSrv\. En este caso debes escribir en la línea de comandos (con permisos de administrador) lo siguiente:

appcmd LIST WP

Y obtendrás resultados similares.

De hecho, appcmd es una herramienta muy interesante a la que tengo intención de dedicar unos cuantos posts de este blog en el futuro.

¡Espero que te sea útil!

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor

Escrito por un humano, no por una IA