2009-03-18 8 views
23

私は、ASP.NETがIISでマルチスレッド化されていると言われています。このスレッドはどのように達成されますか?ASP.NETはどのようにマルチスレッド化されていますか?

サーバーファームは異なるコアに異なる要求を送信しますか?

1回のリクエストで複数のコアを使用できますか?

もっと重要なのは、IISでスレッディングが高くなっている場合、ASP.NETコードにスレッドを追加する利点はありますか?

+3

任意のウェブサイトをあなたのCPUを利用する非同期パターンの実装を検討する必要があるが、マルチスレッド化され、各要求は、他のすべての要求と並行して大幅にアップし提供しています –

答えて

5

IISは複数のコアを自動的に使用します(altあなたがそうするなら、あなたはそれをオフにすることができます)。

ASP.NETコードにスレッドを追加する利点は、独自のアプリケーションの内部動作を制御できるため、すべての決定を下すためにIISに頼らざるを得ません。

+0

それは漠然とした利点です –

+0

漠然とした質問をして、あいまいな答えを得てください。 4つの元の質問の最後に可能な唯一の正確な答えは「それは依存する」ことです。 –

3

通常、新しい要求ごとに別々のスレッドが生成され、オペレーティングシステムはプロセッサスケジューリングを行います。一度にいくつかのリクエストを処理する必要がある場合を除き、余分なスレッドを必要としません。

+0

あなたの答えは、リクエストがその一生の間、同じスレッド上にとどまることを示唆しています。これは真実ではありません(そしてスレッド統計を使用すると、その仮定が問題を引き起こす可能性があります)。 –

+0

まあ、私たちはスレッドの敏捷性を認識したプログラムを開発したことはありませんでした。 – sharptooth

+0

IISはスレッドプールも使用しませんか? Afaikは起動時にスレッドを生成し、要求の間にそれらを再利用します。 – Mendelt

23

サーバーファームは異なるスレッドに対して異なる要求を行うだけでなく、ライフサイクルの過程でスレッドを変更することができます。これはスレッドの敏捷性と呼ばれます。私はそれを説明している良い記事を探しています...

EDIT:まだ確定記事はありませんが、one blog postはいくつかの難点を説明しています。

EDIT:コメントからより多くのリンク:

+1

しかし、1つのリクエストは、ある時点で複数のスレッドで実行されないため、1日の終わりには、リクエスト処理全体がシングルスレッドとして表示されます。 (そうではありませんか) – Tomalak

+1

@Tomalak:いいえ、スレッドを変更できるので、シングルスレッドと見なすことはできません。これは、リクエストの開始時に[ThreadStatic]変数に物事をスティックすると、要求の最後には存在しないことを意味します。 –

+0

@Jonこれはリクエスト内から他のスレッドを生成するという考え方をさらに複雑にしてくれると思いますか? – sharptooth

8

ASP.netは.Netスレッドプールを使用します(これは構成可能です) 各スレッドはすでにスレッドプールが占有されるまで、スレッドプール内のスレッドの1つで各要求が受信されます。また、IISスタックにキューが要求されるまで、このキューに要求が送信されます。そこから、新しい要求が非常に醜い 'Server is unavailable'というメッセージに会う。

これは、ASP.net Webサイトの通常の「マルチスレッド」の話です。

スケーラビリティを確保する方法はたくさんあります。最も顕著なのはパフォーマンステストで、コードからボトルネックを取り除くことです。

ASP.netは、あらゆるI/O要求にI/Oスレッドを利用することで、実際に複数のコアを利用できます。それは醜いコードになりますが、速いことはこれまで一度もありませんでした。

「さらに重要なのはどの 利点がある:ここでは

この

UPDATE

を行う方法についての明確なMSDN MAGポストは、まあ、私はおそらくあなたの完全な質問に答えるためにしようとしていますASP.Netにスレッドを追加するには スレッドがIISの上位 で実行されている場合は?

短い答えは次のとおりです。 長時間実行されているプロセスを待っている場合は、要求クライアント(つまり、帯域外AJAX呼び出し)に対してより良い経験を実装することをお勧めします。

完了する必要がある複数の独立したタスクがある場合要求しているクライアント:タスクを並行して実行するために新しいプロセスを生成するほうが良いかもしれません。

サイトが大量のトラフィックを取得した場合、その後、あなたが本当に良く設計により

関連する問題