Como administrador de servidores me toca la parte de estar detectando cuando un servidor se encuentra afectado su rendimiento por una aplicación, así que en ocasiones el alto consumo de procesador es a causa de IIS worker process (w3wp.exe) el cual si tenemos varias aplicaciones publicadas en el IIS el administrador de tareas nos mostrara varios procesos w3wp.exe el cual si tienen descripción genérica no podremos identificar que publicación es la que tiene el alto consumo de procesador en IIS.
Identificar publicación con alto consumo de procesador en IIS
Entramos al IIS, seleccionamos el servidor, en la ventana principal nos mostrara las opciones de IIS donde buscamos Worker Processes el cual nos mostrara el consumo de CPU de cada publicación.
Una vez que abrimos el Worker Processes vamos las publicaciones de la siguiente forma (Ver imagen siguiente) donde podremos identificar fácilmente cual publicación es la que esta consumiendo recursos.
Aun dando doble clic sobre el proceso de la aplicación con alto consumo, podremos analizar mas a fondo de donde proviene la carga al obtener las solicitudes web actualmente en ejecución.
Identificar publicación con alto consumo de procesador en IIS vía linea de comando
Abrimos Command Prompt como administrador y abrimos la ruta %windir%System32inetsrv
cd %windir%System32inetsrv
y ejecutamos
appcmd list wp
Para obtener el identificador del proceso (PID)
por otro lado podemos obtener las solicitudes web actualmente en ejecución el cual es una opción bastante útil de appcmd.
Donde obtenemos el resultado con la siguiente nomenclatura.
REQUEST "00000000000000" (url:00000000, time:0000 msec, client:localhost, stage:BeginRequest, module:IIS
- URL: La URL completa que se esta ejecutando.
- time: El tiempo total en milisegundos que tiene ejecutándose la solicitud Web.
- client: La dirección del usuario que inicio la solicitud.
- stage: La etapa del canal de IIS en el que se encuentra la solicitud.
- module: El modulo ASP.NET que se esta ejecutando
Analizando lo anterior podemos darnos si:
- Si las solicitudes son para la misma URL, quizás esta sea la fuente del problema (ejemplo: si esta sobre cargada de consultas o información).
- Solicitudes del mismo cliente/usuario, El usuario esta ocasionando trafico en el servidor intencionalmente o no (Si el equipo esta infectado con Malware).
Causas comunes de alto consumo de CPU del IIS
- Una tasa alta de errores en la aplicación web ASP.NET publicada.
- Aumento de trafico / consultas Web.
- Código ASP.NET sin optimizar.
- Recolección de basura – Enlace
- Solicitudes bloqueadas en algún lugar del ciclo de ASP.NET – Enlace