c# json.net profiler identityserver4 azure-application-insights

c# - Profiler BLOCKED_TIME en IdentityServer4/Newtonsoft.Json



json.net azure-application-insights (1)

Mire la información, todas sus solicitudes son alrededor de 3222 ms, hasta que empiece a serializar su JSON. Cuando comienzas a serializar tus datos en json JSON, la solicitud salta hasta 5589 ms, cuando la deserializas, salta a 8811ms.

El problema aquí no es el DB, el DB podría obtener la información lo suficientemente rápido. No el pico en la solicitud, que no tiene, ni el problema de memoria que no existe.

El problema es el hecho de que está obteniendo una gran cantidad de datos, presumiblemente y el compilador tiene su penalización al serializar y deserializar los datos, ambas acciones son bastante costosas.

Tienes que organizar tu lista como JSON, luego deserializarla en un objeto al que puedas acceder de nuevo.

Mire lo que sucede entre esas llamadas, la cantidad de datos que está serializando y deserializando y lo que sucede después.

Esa es tu clave.

Tengo problemas para que el punto final / connect / introspect de mi IdentityServer a veces sea realmente lento (10 segundos para una llamada). Como puede ver a continuación, la mayoría de las llamadas (18k) se realizan rápidamente (<250ms).

He habilitado el nuevo perfil de Application Insights y la mayoría de los rastreos lentos se ven así:

Como se dijo en la página de perfil de Application Insights :

BLOCKED_TIME indica que el código está esperando que esté disponible otro recurso, como esperar un objeto de sincronización, esperar que un hilo esté disponible o esperar a que finalice una solicitud.

Pero no tengo motivos para creer que esto debería estar esperando algo. No hay un pico en las solicitudes, así que no creo que haya suficientes hilos disponibles o algo así. La memoria no parece ser un problema para nuestro plan de servicio de aplicaciones porque siempre es alrededor del 40%. También busqué en la fuente de IdentityServer4 pero no pude identificar ninguna causa para esto. Así que ahora estoy atascado. ¿Alguien puede señalarme las posibles causas de estas solicitudes lentas? ¿O señalarme en la buena dirección para determinar una causa? ¡Cualquier ayuda será muy apreciada!

Edite con información adicional: usamos IdentityServer4.EntityFramework para almacenar tokens de referencia en un sql azure db. He buscado en Application Insights y las consultas en esas solicitudes lentas se realizan en menos de 50 ms. Así que supongo que no es la base de datos.