He tenido problemas durante la semana pasada donde una de mis aplicaciones web que se ejecutan en IIS se bloquea en momentos aleatorios al menos una vez al día, tengo que reciclar el grupo de aplicaciones para que vuelva a la vida. La CPU y la memoria parecen normales.
Cuando miro los subprocesos activos en la sección de procesos de trabajo en el administrador de IIS, puedo ver que los subprocesos se acumulan como si estuvieran atascados, cuando se cuelga hay alrededor de 25+ subprocesos allí, cuando se ejecuta correctamente hay de 3 a 6 en cualquier punto .
Supongo que esto podría deberse a un cambio de código en mi aplicación web C#, pero no puedo determinar dónde ni qué es, solo se han realizado algunos cambios menores según lo que puedo recordar.
La última semana me esforcé mucho en diagnosticar con varias herramientas como WinDbg y dotTrace para ver si podía rastrear algo obvio, pero en este momento estoy un poco perdido.
Puedo ver que hay muchos subprocesos con errores de tiempo de espera al conectarse a mi base de datos NoSql (RavenDb), sin embargo, creo que esto es una pista falsa y se debe a que los subprocesos están bloqueados en IIS, ya que puedo conectarme a la misma base de datos desde otra aplicación IIS. muy bien, además de utilizar las herramientas de administración de bases de datos para administrar/consultar la base de datos.
Tengo minivolcados e instantáneas de dotTrace para jugar.
Aquí están los resultados de "~*e !clrstack" en WinDbg: https://gist.github.com/phinett/7901d82fa526696d3c92
¿Alguna ayuda/idea sobre lo que debería buscar para localizar al culpable? Estaré encantado de proporcionar acceso a minivolcados si es necesario.
¡Gracias!
Respuesta1
Probablemente sea mucho más sencillo y rápido comenzar con la actualización 1 de DebugDiag v2 y forzar un volcado del proceso y luego ejecutar el análisis de bloqueo.