JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo determinar qué aplicación Web está fuera de control en nuestro servidor

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!

José Manuel Alarcón
Banner

Comentarios (3) -

Muy buen post, si señor ;-)

Responder

Excelente pagina maestro:

Con referencia a este post. Tengo el mismo problema (todo lento,cpu 100%). Pero consulto:

Hice el comando cscript.exe iisapp.vbs y me da 2 respuesta:

PID de W3WP.EXE: 5384 AppPoolId: DefaultAppPool
PID de W3WP.EXE: 5972 AppPoolId: MssharePointAppPool

Significa que MssharePointAppPool tiene el problema?

Cuando dices "Desmadrado (real academia: Abandona por la madre)". Hay algun proceso que no esta enlazado con otro y que consumiendo los recurso?

Sabras algun otro comando que pueda profundizar mas?
Que significa 5972? es algun puerto?

Disculpa tanta pregunta, pero ya no se me acurre que mas hacer....

Grx por la ayuda.  Suerte en todo!!!

Marco

Responder

Hola Marco:

En España "desmadrado" es una palabra coloquial que significa "fuera de control".

Como explico en el post el numerito ese (en tu caso 5972) es el identificador del proceso. Éste te aparece también en el administrador de tareas, por lo que así eres capaz de relacionar el nombre del proceso con el w3wp.exe que está fuera de control y saber cuál de tus dos aplicaciones es la que tiene problemas.

Dudo mucho que tu problema sea Sharepoint, así que imagino que tienes un problema de rendimiento grave en tu aplicación.

Saludos

JM

Responder

Agregar comentario