4

IIS7.5 64 ビットで同時に処理できる論理 CPU あたりのスレッド数は? 論理 CPU あたり 12 の IIS 処理スレッドと聞いたことがありますが、論理 CPU あたり 100 の IIS 処理スレッドとも聞いたことがあります。

アップデート:

具体的でなくて申し訳ありませんが、IIS スレッドプール スレッドについて言及していました。これは、http get リクエストが webapi サーバーに入るとき、サーバーが一度に処理できる同時 http get リクエストの数 (論理 CPU あたり) はどれくらいですか? サーバーが取得からの平均応答時間に基づいて処理できる要求の数に基づいて、いくつかのしきい値容量の数値を計算しようとしています。これは約 500 ミリ秒です。

4

1 に答える 1

4

http://msdn.microsoft.com/en-us/library/system.threading.threadpool

プロセスごとに1つのスレッドプールがあります。.NET Framework 4以降、プロセスのスレッドプールのデフォルトのサイズは、仮想アドレス空間のサイズなどのいくつかの要因によって異なります。プロセスはGetMaxThreadsメソッドを呼び出して、スレッドの数を判別できます。スレッドプール内のスレッド数は、SetMaxThreadsメソッドを使用して変更できます。各スレッドはデフォルトのスタックサイズを使用し、デフォルトの優先度で実行されます。

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

したがって、IIS 7.0統合モードの場合、 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET\2.0.50727.0内のMaxConcurrentRequestsPerCPUという名前のDWORDによって同時要求の数が決まります。CPUあたり。デフォルトでは存在せず、CPUあたりの要求数は12に制限されています。スレッドスイッチなしでASP.NET要求がどれだけ高速に実行されるかを知りたい場合は、値を0に設定できます。これにより、 CLRスレッドプールスレッドに切り替えずに、IIS I/Oスレッドで実行する要求。これは主に、静的リクエストに比べて動的リクエストの実行に時間がかかるため、お勧めしません。また、スレッドスイッチを使用すると、システムの全体的なパフォーマンスが向上すると思います。ただし、これは重要です。アプリケーションが主にまたは完全に非同期のリクエストで構成されている場合、特にリクエストが非常に長時間実行されている場合、デフォルトのMaxConcurrentReqeustsPerCPUの制限である12は制限が厳しすぎます。この場合、設定することをお勧めしますMaxConcurrentRequestsPerCPUを非常に高い数値にします。実際、v4.0では、 MaxConcurrentRequestsPerCPUのデフォルトを5000に変更しました。5000は非常に多数であるため、多くの非同期要求を同時に実行できることを除けば、特別なことは何もありません。

于 2013-03-12T22:20:04.687 に答える