私のIdentityServerの/ connect/introspectエンドポイントが時には非常に遅い(1回の呼び出しで10秒)という問題があります。以下に示すように、ほとんどのコール(18k)はすぐに実行されます(< 250ms)。IdentityServer4/Newtonsoft.JsonのProfiler BLOCKED_TIME
私は新しいApplication Insights profilingを有効にして、ゆっくりとトレースのほとんどは、次のようになります。
としてはApplication Insights profiler pageに言った:
BLOCKED_TIME
が示しますコードが への別のリソースを待っています。 uchが同期オブジェクトを待つこと、スレッドが利用可能になるのを待つこと、または要求が完了するのを待つこと。
しかし、私はこれが何かを待っていると信じる理由はありません。要求が急増しているわけではないので、利用できるスレッドがないとは思えません。メモリは、常に約40%であるため、Googleのアプリサービスプランには問題ありません。私もIdentityServer4のソースを掘り下げましたが、これの原因を特定できませんでした。だから今私はちょっと固まっている。誰も私にこれらの遅い要求の原因を教えてもらえますか?原因を特定するのに良い方向に向いていますか?どんな助けでも大歓迎です!
いくつかの追加情報で編集:IdentityServer4.EntityFrameworkを使用して、参照トークンをSQL Azureデータベースに格納します。私はApplication Insightを見てきましたが、遅い要求のクエリは50ms未満で実行されます。だから私はそれがデータベースではないと推測しています。
コールのカウントだけでなく、プロファイル結果の時間も表示できますか? – dbc
私はコールカウントを表示するオプションが表示されませんが、それはトークンを一度しかシリアル化しないので、あまりないと思います。 – Zenuka