Ich habe Probleme, dass der/Connect/Introspect Endpunkt meines IdentityServer manchmal sehr langsam ist (10 Sekunden für einen Anruf). Wie Sie unten sehen können, sind die meisten Anrufe (18k) schnell (< 250ms).Profiler BLOCKED_TIME in IdentityServer4/Newtonsoft.Json
Ich habe die neue Application Insights profiling aktiviert und die meisten der langsamen Spuren wie folgt aussehen:
Wie gesagt auf dem Application Insights profiler page:
BLOCKED_TIME
zeigt die Code wartet auf eine andere Ressource zu verfügbar sein, s Sie warten auf ein Synchronisationsobjekt, warten auf , damit ein Thread verfügbar ist, oder auf das Ende einer Anfrage.
Aber ich habe keinen Grund zu glauben, dass dies auf etwas warten sollte. Es gibt keine Spitzen an Anfragen, also glaube ich nicht, dass nicht genug Threads verfügbar sind oder so. Speicher scheint kein Problem für unseren App-Service-Plan zu sein, da er immer rund 40% beträgt. Ich habe auch in die Quelle von IdentityServer4 gegraben, konnte aber keine Ursache dafür identifizieren. Jetzt bin ich irgendwie festgefahren. Kann mir jemand auf mögliche Ursachen für diese langsamen Anfragen hinweisen? Oder weisen Sie mich in die gute Richtung, um eine Ursache zu bestimmen? Jede Hilfe wird sehr geschätzt!
Mit ein paar zusätzlichen Informationen bearbeiten: Wir verwenden IdentityServer4.EntityFramework, um Referenz-Token in einer SQL Azure-Datenbank zu speichern. Ich habe in Application Insights gesucht und die Abfragen in diesen langsamen Anforderungen in weniger als 50 ms durchgeführt. Also ich vermute, es ist nicht die Datenbank.
Können Sie die Anrufanzahl sowie die in diesem Profilergebnis benötigte Zeit anzeigen? – dbc
Ich sehe keine Option, um Anrufzählungen anzuzeigen, aber ich denke, es wäre nicht viel, da es das Token nur einmal serialisieren würde. – Zenuka