ASP.NET Web アプリケーションには固定数のワーカー スレッドと I/O スレッドが付与され<processModel>
、web.config ファイルの設定によって管理されるため、多くのユーザーがいる大規模な Web サイトでは、エラーのログ記録や電子メールの送信などのタスクを実行するために、新しいワーカー スレッドをスピンしたり、.NET ThreadPool からスレッドを使用したりすることに特に利点はありません。
言い換えれば、私の Web アプリケーションで、着信するすべての要求に対して、要求ハンドラーが 3 つのタスク (タスク A、タスク B、タスク C の順) を連続して実行し、結果を返すとします。 HTML ページ。
ただし、3 つのタスクのうち、タスク B は、結果の HTML には何の関係もありません。これは、ログ ファイルにテキストを記録するなどのタスクである可能性があります。
次に、タスク B を別のワーカー スレッドに移動するとCurrentThread
、ワーカー スレッドの ASP.NET プールからのワーカー スレッドでもある がより速く返され、アプリケーションのユーザーの応答時間が短縮されます。タスク B はワーカー スレッドの同じ ASP.NET プールから新しいワーカー スレッドを割り当てる必要があるため、アプリケーションがサービスを提供できる同時ユーザーは影響を受けます。
したがって、Web アプリケーションのシナリオでは、新しいスレッドの分岐はパフォーマンスにプラスの影響を与えますが、スケーラビリティにはマイナスの影響を与えるという私の理解は正しいですか。したがって、多くのハードウェアを購入してスケールアウトする余裕がある場合にのみ、マルチスレッドのサーバー側コードを作成する必要がありますか?
そうでない場合は、一方を他方と交換するだけですか?