Recientemente migré un conjunto de servidores Windows Server 2008 R2 / IIS 7.5 a nuevos servidores que ejecutan Windows Server 2012 / IIS 8.
Estoy experimentando un comportamiento extraño de IIS. Tenemos 2 servidores idénticos, cada servidor ejecuta 2 sitios web, cada uno en su propio grupo de aplicaciones. El código para cada uno de los sitios web es idéntico. (Literalmente ... mismo dll y todo, solo una configuración ligeramente diferente).
Los grupos de aplicaciones están configurados para reciclarse en un horario cada 24 horas, pero durante ese período de 24 horas, el uso de la CPU del proceso de trabajo w3wp se incrementa en incrementos del 12,5% (el servidor tiene 8 procesadores, por lo que no creo que sea una coincidencia).
Una vez que el uso de la CPU aumenta, NO volverá a bajar hasta que la aplicación se recicle. Por lo que puedo decir, la aplicación no está haciendo nada y NO está procesando solicitudes en este momento. Puedo bloquear todo el tráfico al servidor y el uso de la CPU simplemente permanecerá allí. Incluso puedo reiniciar el sitio web, y el uso de la CPU sigue siendo el mismo. La única forma de restablecer el uso de la CPU es reciclar o reiniciar el grupo de aplicaciones en el que se ejecuta.
Estoy algo seguro de que este problema no tiene nada que ver con mi código, pero ¿algún tipo de configuración de IIS deficiente o un cambio en IIS 8 que funciona mal con la configuración de hardware o algo así?
No estoy seguro de si es importante o no, pero estos son servidores Rackspace Performance Cloud.
Aquí hay una captura de pantalla para mostrarle la carga de la CPU a lo largo del tiempo en estos servidores (las flechas verdes señalan los momentos en que el grupo de aplicaciones se recicla. Puede ver que cada meseta es un múltiplo integral de 12.5%:
¿Alguien ha observado este comportamiento? He encontrado esta pregunta de 2009 con alguien que tiene lo que parece ser el mismo problema con IIS 6:
IIS w3wp usando alta CPU sin tráfico
Cualquier ayuda es muy apreciada
Puede intentar usar la herramienta de diagnóstico de depuración para localizar qué está causando el problema. Por lo general, es para solucionar fallas y pérdidas de memoria, pero podría ayudar a encontrar qué componente está causando el problema.
fuente
high CPU or RAM more 90%
?Esto realmente parece un código atascado en un bucle infinito.
Entra una solicitud, IIS comienza a servirla, algo (probablemente un error) desencadena este comportamiento, un subproceso de trabajo ingresa a un bucle infinito y vincula una CPU al 100%, y luego permanece así hasta que se recicla el grupo de aplicaciones.
Incluso si no entran nuevas solicitudes, la CPU permanece en uso porque el hilo atascado nunca termina realmente.
A veces, una nueva solicitud desencadena este comportamiento nuevamente , y luego obtienes dos CPU atascadas (o tres, o cuatro ...).
Reciclar el grupo de aplicaciones, por supuesto, termina todos los hilos de trabajo, por lo tanto, el problema se resuelve ... hasta que vuelva a suceder.
fuente
Puede adjuntar un generador de perfiles de CPU al proceso w3wp y echar un vistazo a lo que está sucediendo allí. Debería poder ver qué consume los ciclos de la CPU.
fuente
A mí me parece un bucle infinito. Lo he visto varias veces, a pesar de que IIS dice que no hay solicitudes pendientes. No estoy seguro de cómo puede ser eso, pero esto es exactamente lo que verías. La parte difícil es que IIS no registra las solicitudes hasta que se completan, por lo que es difícil averiguar qué solicitud desencadena este comportamiento.
fuente