mucha memoria high consuming consume asp.net profiling w3wp red-gate-ants

asp.net - memoria - W3WP.EXE con 100% de CPU, ¿por dónde empezar?



w3wp.exe high cpu (9)

  1. Contadores de rendimiento estándar de Windows (busque otra actividad correlacionada, como muchas solicitudes GET, red excesiva o E / S de disco, etc.); puede leerlos tanto desde el código como desde perfmon (para activar la recopilación de datos si el uso de la CPU supera un umbral, por ejemplo)
  2. Contadores de rendimiento personalizados (especialmente para el tiempo de solicitudes fuera de la caja y otras llamadas donde el tiempo de ejecución es incierto)
  3. Pruebas de carga, utilizando herramientas como Visual Studio Team Test o WCAT
  4. Si puede realizar pruebas o actualizar a IIS 7, puede configurar el Seguimiento de solicitudes fallidas para generar un seguimiento si las solicitudes toman más tiempo.
  5. Use logparser para ver qué solicitudes llegaron en el momento del pico de CPU
  6. Revisiones de código / recorridos (en particular, busque bucles que no terminen correctamente, como si ocurriera un error, así como bloqueos y posibles problemas de subprocesamiento, como el uso de estática)
  7. Perfil de CPU y memoria (puede ser difícil en un sistema de producción)
  8. Explorador de procesos
  9. Monitor de recursos de Windows
  10. Registro detallado de errores
  11. Registro de seguimiento personalizado, incluidos los detalles del tiempo de ejecución (quizás condicionales, según el contador de rendimiento de uso de la CPU)
  12. ¿Están ocurriendo los errores cuando el AppPool se recicla? Si es así, podría ser una pista.

Una aplicación web ASP.NET que se ejecuta en IIS6 dispara periódicamente a la CPU hasta el 100%. Es el W3WP el responsable de casi todo el uso de la CPU durante estos episodios. La CPU permanece anclada al 100% desde unos pocos minutos hasta más de una hora.

Esto está en un servidor de prueba y el sitio solo está recibiendo un tráfico muy ligero de los evaluadores en este momento.

Hemos ejecutado el generador de perfiles ANTS en el servidor, pero ha sido poco alentador.

¿Dónde podemos comenzar a descubrir qué está causando estos episodios y qué código mantiene a la CPU ocupada durante todo ese tiempo?


Esta es una suposición en el mejor de los casos, pero tal vez su equipo de desarrollo esté creando e implementando la aplicación en modo de depuración, en lugar de en modo de lanzamiento. Esto causará la aparición de archivos .pdb. La implicación de esto es que su aplicación consumirá recursos adicionales para recopilar información sobre el estado del sistema y la depuración durante la ejecución de su sistema, lo que provocará una mayor utilización del procesador.

Por lo tanto, sería lo suficientemente simple como para garantizar que se estén creando y desplegando en modo de lanzamiento.


Este es un post muy antiguo, lo sé, pero también es un problema común. Todos los métodos sugeridos son muy buenos, pero siempre apuntarán a un proceso, y hay muchas posibilidades de que ya sepamos que nuestro sitio está generando problemas, pero solo queremos saber qué página específica está demorando demasiado tiempo en el procesamiento. La herramienta más precisa y simple en mi opinión es IIS.

  1. Simplemente haga clic en su servidor en el panel izquierdo de IIS.
  2. Haga clic en ''Procesos de trabajo'' en el panel principal. ya ves qué grupo de aplicaciones está tomando demasiada CPU.
  3. Haga doble clic en esta línea (finalmente haga clic en "Mostrar todo") para ver qué páginas consumen demasiado tiempo de CPU (columna "Tiempo transcurrido") en este grupo

No es una gran respuesta, pero es posible que deba ir a la vieja escuela y capturar una instantánea de la imagen del proceso de IIS y depurarlo. También es posible que desee consultar el blog de Tess Ferrandez : ella es una ingenua de Microsoft ** y su blog se centra en la depuración de ventanas ASP.NET, pero el blog es relevante para la depuración de ventanas en general. Si seleccionas la etiqueta ASP.NET (que es a lo que me he vinculado), verás varios elementos que son similares.


Si identifica una página que demora en cargarse, use el Panel del desarrollador de SharePoint para ver qué componente lleva tiempo.


Si su CPU alcanza el 100% y se queda allí, es muy probable que tenga un escenario de interbloqueo o un bucle infinito. Un perfilador parece una buena opción para encontrar un bucle infinito. Sin embargo, los puntos muertos son mucho más difíciles de rastrear.



Tuvimos esto en una consulta recursiva que arrojaba toneladas de datos a la salida: ¿has verificado dos veces que sale y no existen bucles infinitos?

Podría tratar de reducirlo con una sola página; encontramos que ANTS no era de mucha ayuda en ese mismo caso, lo que terminamos haciendo fue ejecutar el sitio en una página, ver la CPU, pasar a la siguiente página ver la CPU, muy metódico y mucho tiempo, pero si no puede encontrarlo con un poco de código, es posible que no tenga suerte.

Pudimos utilizar los archivos de registro de IIS para rastrearlos hasta un conjunto de páginas sospechosas:

Espero que ayude !


Process Explorer es una excelente herramienta para solucionar problemas. Puedes intentarlo para encontrar el problema del alto uso de la CPU . Te da una idea de cómo funciona tu aplicación.

También puede intentar que Procdump el proceso y analice lo que realmente sucedió en la CPU.