2011-11-10 1 views
9

ユーザーがHTTP経由で.aspxページを要求すると、ASP.NETが少なくとも1つのスレッドを作成すると想定するのは安全でしょうか?ASP.NET HTTPリクエストは1スレッドに変換されますか?

もしそうなら、それはどれくらい持続するのですか?

1000人が同じ.aspxページにHTTP要求を行う場合、スレッドのリサイクルがいくつかあるので、1000スレッドを別に生成しません。

+1

マイクロソフトからあなたに約束されていないものを引き受けることは、実際には安全ではありません。 –

+3

私が理解する限り、自分のスレッドを開始しない限り、各リクエストは1つのスレッドによって処理されます。サーバーが何千ものスレッド間のコンテキスト切り替えに圧倒されないように、通常、スレッドプールと呼ばれるスレッドの量は限られています。要求の数がスレッドプール内のスレッドの数より多い場合、スレッドが解放されるまで、他の要求はキューに入れられません。スレッドは、要求が処理される必要がある限り、要求を「持続」またはむしろ処理します。時間がかかり過ぎるリクエストに対してはタイムアウトが設定されることがあります。 –

答えて

10

各リクエストには、iisページプールからスレッドが割り当てられます。これはスレッドがページプールに戻って来る別のリクエスト(ページプールのサイズは通常は50のように巨大ではない)によって使用できるように、これは短い実行プロセスでなければならないという考えがあります。したがって、長い実行要求がある場合は、他の要求に対してスレッドを解放する非同期呼び出しを行うことが重要です。あなたの長時間実行されているリクエストの完了時に、プールから別のスレッドを取得して終了します。

ボトムラインは、1000人が同時にリクエストを行い、いずれも終了しない場合、50人ほどが実行され、残りの950人が待機します。

+1

詳細については、http://support.microsoft.com/kb/821268を参照してください。 Microsoftは使用する用語の代わりにワーカースレッドプール/ワーカースレッドを使用します。 –

+0

ありがとうございます。しかし、あなたが言っているように、ページプールサイズはどこで約50に設定されていますか?私はIISのAppPoolプロパティでそれが表示されません。 – SaltProgrammer

関連する問題