¿Cómo identificar la causa del uso del 100% de la CPU en Azure App Service?

10

Tengo cinco aplicaciones en un plan de servicio de aplicaciones de Azure, todas diferentes copias de la misma aplicación para diferentes clientes. Es una aplicación ASP.NET MVC con una base de datos SQL.

Esta mañana me desperté con sitios lentos y que no responden, lo que a veces resulta en un error 503. Al verificar las métricas de CPU / Memoria para el Plan de Servicio de la Aplicación descubrí que la CPU estaba vinculada al 100%:

CPU al 100%

Y el gráfico del tiempo de CPU de los sitios individuales muestra que todos se disparan al mismo tiempo, aunque algunos peor que otros:

Uso de CPU de sitios individuales

Traté de resolver el problema haciendo un reinicio avanzado de la aplicación, pero el blade no se cargaba, supongo que estaba tratando de obtener información del servidor que no podía responder.

Al final, intenté detener cada uno de los sitios uno por uno, lo que devolvió la CPU a cero, luego los volví a encender, lo que parecía haber resuelto el problema, pero ahora algunos de ellos están comenzando a subir de nuevo.

Experimenté un problema similar hace un par de semanas y asumí que estaba creciendo demasiado para mi Plan de aplicaciones, así que actualicé de S1 a S2 y había estado bien hasta hoy.

Estoy totalmente perdido en cuanto a cómo averiguar cuál es la causa de este comportamiento hambriento de CPU. ¿Alguien puede señalarme en la dirección correcta de cómo puedo comenzar a diagnosticar esto?

littlecharva
fuente
esto parece suceder un poco en los planes de servicio de aplicaciones de Azure, ¿ha contactado a MS? - a menos que haya realizado algún cambio, les diría que hay un problema con la plataforma.
Sum1sAdmin
No tengo un plan de apoyo con ellos, así que no creo que haya alguna forma de avisarles. Eso es un poco preocupante si solo voy a experimentar aleatoriamente problemas con el 100% de la CPU; podría tener que buscar otro proveedor. ¿Te ayudaría tener dos instancias?
littlecharva
Usaría los foros abiertos como technet. Si es crítico, podría ampliarlo, pero no pagaría más por algo que necesitan arreglar, si ese es el caso.
Sum1sAdmin

Respuestas:

5

Hemos tenido este problema varias veces y cada vez se ha ejecutado GC (recolección de basura). Es difícil de probar y diagnosticar, pero lo que termino haciendo es usar el sitio kudo (scm), hacer clic en herramientas => soporte (que lo lleva al sitio de soporte para aplicaciones.

Desde aquí, elija su directorio (en caso de que tenga varios) y sitio, haga clic en Analizar => Métricas y luego en el botón Diagnosticar ( NOTA: esto ya ha cambiado para que estos pasos puedan cambiar en cualquier momento), luego vuelva a Analizar => Dianotics, usted Eventualmente obtendré un informe de volcado de memoria => "estado de análisis". Este debe ser un archivo mht (que puede abrir en el navegador odioso IE o Edge), luego busque la clave "gc".

encontrará algunos marcos de pila de llamadas interesantes con referencias a cosas como "GCFrame" o llamadas más interesantes a "System.Threading.WaitHandle.WaitMultiple" si obtiene demasiados de estos, es posible que su sistema tenga problemas con la recolección de basura .

Cómo resolver eso ... ese es un tema cubierto en muchos otros hilos porque es como preguntar "¿cómo vivo en un mundo con IE 6 todavía en uso?" ...

cdmdotnet
fuente
1
Esto se ha movido. Ahora se encuentra en el Servicio de aplicaciones (no en el sitio de SCM, sitio de Azure normal) en "Diagnosticar y resolver problemas-> Herramientas de diagnóstico-> Recopilar volcado de memoria"
Josh Noe
3

Su mejor opción sería instalar New Relic o Application Insights para esta aplicación en particular. Se puede instalar fácilmente a través del Servicio de aplicaciones -> Herramientas -> Supervisión del rendimiento. Esto le dará una visión detallada de lo que está sucediendo tanto en el lado del servidor como en el del cliente.

Monitoreo de aplicaciones

Artículo: Supervisar el rendimiento de la aplicación web de Azure

Bruno Faria
fuente