2017-02-10 8 views
12

私の理解では、ASP.NET Coreミドルウェアは、リクエストの処理準備が整うと実行されます。しかし、アプリケーションがロードされていて、ASP.NET Coreが入ってくるすべてのリクエストを処理できない場合、それらはどこかの「キュー」に置かれますか?私はこれがKestrel内のいくつかの管理されたキューであるのか、libuvと何か関係があるのか​​どうかはわかりません。Kestrel/ASP.NET Coreのリクエストキューに時間を費やす方法はありますか?

このキューでは、どのくらいの時間が費やされているか知りたいと思います。 HttpContextに、これを伝えるものがありますか?

ありがとうございます。

+0

興味深いことに、キュー時間が重要な理由は何ですか? – DavidG

+0

私のサービスに要求を出すのに費やされた時間を見分けるために、そうでなければ速い要求をログに記録します。例えば、私のブラウザクライアントは、応答を得るのに2秒かかりましたが、ミドルウェアからのすべてのログは合計200ミリ秒を報告します。私はその1.8sがどこだったのかを確かめたい。ご注意いただきありがとうございます:) – ChrisBellew

+0

そして、欠落している時間はリクエストキューによるものだと思いますか? – DavidG

答えて

4

この質問は簡単ではありません。

すべての時間をトラッキングする場合は、多くの手順を実行する必要があります。冒頭には独自のスタンプやティックをリクエストに追加するので、それらを1つ1つ特定することができます。 第2に、ハンドラを作成して、リクエストをインターセプトし、時刻を記録します。 第3に、すべての要求関連メソッドにロギングポイントを追加します。 第4 - これは驚くべきことです - この時間を短縮するために大きなことをすることはできません。スレッド化、並列リクエスト、セッション処理などに関するIISの設定を期待してください。 第5 - ブラウザが2000ミリ秒を測定すると、 ms、それは.NETのコアではなく、あなたのコード/アーキテクチャ/設定です。 悪い知らせをして申し訳ありません。

System.Diagnostics.Stopwatchクラスを使用して時間を測定します。

関連する問題