6 votos

Intermitente de alta de la CPU (100%) en la producción de servidor web

X-Post de StackOverflow:

http://stackoverflow.com/questions/9465123/intermittent-high-cpu-100-on-production-webserver

Tenemos un clúster web con 3 servidores web, cada uno con 24 núcleos y 24 GB de mem.

Nuestra aplicación es la última parcheado ASP.NET 4.0, Con MVC3, en IIS 7.5 - En que es la propia aplicación la piscina.

Muy intermitentemente, (tal vez una vez cada 2/3 días) uno de los servidores web dejará de atender las solicitudes, y todos los 24 núcleos mostrará el 100% de la CPU (memoria, disco y vea de forma normal).

El par de veces cuando el administrador de IIS no está completamente congelado, la participación activa de las solicitudes de ejecución no parecen ofrecer toda la información útil, con una bonita extensión aleatoria a través de un gran número de áreas del sitio/solicitudes.

Una vez que un servidor ha muerto, somos capaces de llevarlo a cabo de la carga y después de 5 minutos de que ya no atender las solicitudes, la actividad de la CPU va a caer a normnal - que nos hacen pensar que no es un bucle infinito.

Un volcado de memoria del proceso de trabajo (alrededor de 4 gb es el tamaño!) no parece mostrar ninguna de nuestro código/espacios de nombres en cualquier lugar de la administrada seguimientos de pila -, sino que simplemente .Net empezar a pedir cosas (Es posible que yo estoy usando WinDbg mal - y no la carga de nuestros símbolos correctamente, pero a los seguimientos de pila no muestran ninguna falta/sin nombre de las llamadas de método - con lo que estoy bastante confundido)

Nuestros servidores son normalmente de procesamiento de 1000 req/s muy bien, así que esto es todo muy extraño.

Una cosa rara que hemos visto en el monitor de Rendimiento - fue la Contención de la Tasa / seg va a gustar 800. No tenemos ninguna fantasía multi-roscado código en nuestra aplicación, y la única cerraduras de que estamos en nuestro almacenamiento en caché de código (Que no ha cambiado en años).

Cualquier consejo/sugerencias sobre la manera de diagnosticar este problema sería más apreciado.

Saludos.

6voto

Cybis Puntos 5062

Dave, Algunas ideas para comenzar:

Estoy asumiendo que es el w3wp.exe que es comer de sus recursos. Si no, puede ser vale la pena la ejecución de algunos PAL informes para obtener una mejor visión de la salud en general del servidor: http://pal.codeplex.com/ a Veces incluso me voy a correr PAL incluso si es un IIS problema... PAL puede detectar todo tipo de problemas que usted nunca podría pensar.

Compruebe el Monitor de Rendimiento (tanto antes como durante su pico)... tratar de averiguar si su ASP.Net las Aplicaciones de Solicitud/Seg es mayor durante la "respuesta lenta" períodos... me parece que para ser la manera más rápida de decirle si usted está manejando más solicitudes que las normales.

Trate de averiguar si hay una (o algunas) de las páginas que se están tomando más tiempo para cargar. Asegúrese de IIS estadísticas se registran y, a continuación, busque un aumento en el tiempo tomado. Checkout Registro de Analyer (http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1864).

Ah, y no te olvides de la StackExchange mini analizador de http://code.google.com/p/mvc-mini-profiler/ una vez que averiguar lo que la URL está causando el problema.

Además, no hay que pasar por alto .RED de error de la captura de los que tiene en su lugar :-)

Háganos saber lo que usted ve. -Chris

3voto

Greg Askew Puntos 17236

Uso DebugDiag 1.2 para realizar el análisis de la volcado:

https://www.microsoft.com/download/en/details.aspx?id=26798

Es útil tener en cuenta que cualquier proceso que sea capaz de utilizar más de un hilo que puede empujar a la utilización del 100% en todos los procesadores de un servidor. Esto incluye el código nativo e incluso os principales componentes.

Cuando usted dice "última parcheado", para mí eso significa que con la Actualización de Windows, que no obtener una gran cantidad de las más serias correcciones de errores para Windows 2008 R2.

En particular, si la aplicación está accediendo a los archivos en recursos compartidos remotos, sería una buena idea tener el sistema de archivos revisiones aplicadas:

Lista de los disponibles en la actualidad revisiones para el Archivo de las tecnologías de los Servicios en Windows Server 2008 y Windows Server 2008 R2
http://support.microsoft.com/kb/2473205

1voto

jamespo Puntos 1475

Comprobar si está siendo atacado por un HashDos ataque - y establecer los límites de su petición.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: