Thomas Marquardtによるfollowingの記事では、ASP.Net要求、実行するように構成できる最大/最小CLRワーカースレッド/ Managed IOスレッド、関連するさまざまな要求キュー、およびそれらの既定サイズをIISがどのように処理するかについて説明しています。ASP.NET IIS - 要求はいつキューに入れられますか?
今品につきとして、以下がIIS 6.0で発生します。
- ASP.NETは、IIS IOスレッド
- にIIS IOスレッドと投稿からのリクエスト「HSE_STATUS_PENDING」を拾っ要求されますCLRワーカースレッドに引き渡す
- 要求のレイテンシが高く、すべてのスレッドが占有されている(スレッド数がhttpRuntime.minFreeThreadsに近づいている)場合、要求はアプリケーションレベルの要求キューに送信されます(このキューはAppDomainごとです) )
-
また、ASP.NETは同時に実行されている要求の数をチェックします。記事は、私が「同時実行要求の数が多すぎると、」それはASP.NETグローバル要求キュー(これはワーカープロセスごとにある)(アップデート2をご確認ください)
に着信要求をキューに入れることを述べてASP.NETが現在実行している要求の数が多すぎるとみなし、グローバルASP.NET要求キューへの要求のキューイングを開始する「しきい値」が何であるかを知りたいですか?
このしきい値はワーカースレッドの最大数の設定に依存すると考えられますが、同時に実行する要求の数が高すぎるとASP.NETが判断して、 ASP.NETグローバル要求キューこの式は何でしょうか?またはこの設定は構成可能ですか?
Iが再び記事を読み、コメントセクションで私はこの見出さ
更新:IIS 6でとIIS 7クラシックモードで
1)、各アプリケーション(アプリケーションドメイン) には、ワーカー スレッドの可用性を維持するために使用するキューがあります。使用可能なワーカースレッドの数 が httpRuntime minFreeThreadsで指定された制限を下回ると、このキュー内の要求の数が増加します。 httpRuntime appRequestQueueLimitで指定された制限を超えた場合、要求は であり、503のステータスコードで拒否され、クライアントは "サーバーがビジー状態です"というメッセージで HttpExceptionを受信します。 ASP.NETパフォーマンスカウンター「アプリケーションキュー内の要求」には、 にはキュー内の要求数が示されています。はい、CLRスレッド プールは、.NET ThreadPoolクラスによって公開されたものです。
2)requestQueueLimitの名前が正しくありません。実際には、ASP.NET によって同時に処理できる要求の最大数は に制限されています。これには、キューに入れられている要求と、実行中の要求の両方が含まれます( )。 "Requests Current"のパフォーマンス カウンタがrequestQueueLimitを超えている場合、新しい受信要求は が503のステータスコードで拒否されます。
だから、基本的にrequestQueueLimitは(私はそれがアプリケーション・キューにキューイング要求の数を加えたグローバルASP.Net要求キュープラス現在実行中の要求の数を合計すると仮定しています)キューイングされた要求の数を制限実行中です。すべてこれは元の質問に答えるものではありませんが、同時に発生するリクエスト数/待ち時間の長いリクエストのためにサーバーのビジー状態が503になったときの情報を提供します。
アップデート2 (更新2を確認してください)を理解する上で、私の一部に誤りがありました。私はIIS 6とIIS 7の説明を混同していました。
ASP.NETがIIS 7.5と7.0で統合モードでホストされている場合、アプリケーションレベルのキューはもはや存在せず、ASP.NETはグローバル要求キューを維持します。
したがって、実行要求の数が多いとみなされる場合、IIS 7/7.5はグローバル要求キューに要求をキューイングし始めます。質問は、IIS 7/7.5以上を適用するのではなく限り6.
は6.0が懸念しているIIS、そこには世界的なASP.NET要求キューはありませんが、以下は真である:
1. ASPで。 NETがIIS IOスレッドから要求を取得し、IIS IOスレッドに "HSE_STATUS_PENDING"を投稿します。
2.要求がCLRワーカースレッドに引き渡されます。
3.要求が高遅延であり、すべてのスレッドが占有されている(スレッド数がhttpRuntime.minFreeThreadsに近づく)、要求はアプリケーションレベルの要求キューに送信されます(このキューはAppDomainごとです)
4.また、ASP.NETは、新しい要求を受け入れる前に、キューに入れられ、現在実行中の要求の数をチェックします。この数値がprocessModel.requestQueueLimitで指定された値より大きい場合、着信要求は503サーバービジーエラーで拒否されます。
質問に追加された更新により、IIS 7/7.5との関連性は低くなる可能性があります。更新プログラムはIIS 6.0に関する回答を提供します – Ngm
リンク先の記事には、しきい値がMaxConcurrentRequestsPerCPUによって決定されることが記載されています。これが当てはまるとは思わない理由はありますか? – RandomEngy