「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
同時実行性を向上させるためのパラメタについて纏める。
サマリすると以下の様になる。
以下に、Windowsのチューニングの基本的な考え方と纏めておく。
IIS 6 以前、IIS 7 以降のクラシック・モードではmachine.configで以下の設定を使用できる。
.NET 2.0では自動構成のプロセス モデルを導入したため、
殆どの用途で、KB821268に推奨される変更は不要とされている。
状況に応じて Machine.config ファイル内の以下のパラメーターを調整する。
<processModel maxWorkerThreads="20" minWorkerThreads="10" maxIoThreads="20">
<httpRuntime minFreeThreads="8" minLocalRequestFreeThreads="8">
注:IIS 7.0 以降のバージョンの統合モードで実行されている場合は機能しない。
<connectionManagement> <add address="*" maxconnection="2"> <add address="65.53.32.230" maxconnection="12"> </connectionManagement>
<httpRuntime executionTimeout="90"/>
第 17 章 「.NET アプリケーション パフォーマンスのチューニング」
http://msdn.microsoft.com/ja-jp/library/ff647813.aspx
構成設定 | 規定値 (.NET 1.1) | 推奨値 |
maxIoThreads? | 20 | 100 |
maxWorkerThreads? | 20 | 100 |
minFreeThreads? | 8 | 88*N |
minLocalRequestFreeThreads? | 4 | 76*N |
maxconnection | 2 | 12*N |
<system.web> <processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/> <httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/> </system.web> <system.net> <connectionManagement> <add address="[ProvideIPHere]" maxconnection="96"/> </connectionManagement> </system.net>
MaxConcurrentRequestsPerCPU 設定(下記のレジストリ設定)を使用してください。
IIS 7 以降の統合モード+.NET 3.5 以前では以下のレジストリ設定を使用できる。
統合モードでは、ASP.NET スレッド設定を使用して要求の同時実行性を制御できない。
は、ASP.NET で使用されるスレッド メカニズムを制御しなくなりました。
その代わり、ASP.NET は IIS スレッド プールに依存し、
を設定することで、同時実行要求の最大数を制御できるようになりました。
この設定はグローバルなので、
変更することはできません。
IIS 7 以降の統合モード+.NET 3.5 SP1 以降ではaspnet.configで以下の設定を使用できる。
※ Manual上は、.NET 4 以降になっているが、実際は.NET 3.5 SP1から採用されている。
ASP.NET アプリケーションが
IIS 7.0 以降のバージョンの統合モードで実行されている場合に、
プロセス全体の動作を管理するために ASP.NET で使用される構成設定を指定します。
これらの設定は無視されます。
既定値
<configuration> <system.web> <applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" /> </system.web> </configuration>
ApplicationHost?.configにも、Machine.configと同様にprocessModelタグがあるが、
Machine.configのprocessModelタグとは異なり、同時実行制御に関する設定は存在しない。
%windir%?system32?inetsrv?config\ApplcationHost?.config
applicationPoolのリサイクリングなどの設定ができる。
<applicationPools> <add name="DefaultAppPool" autoStart="true" /> <add name="Classic .NET AppPool" managedPipelineMode="Classic" /> <add name="MyAppPool" autoStart="true" managedPipelineMode="Integrated" /> <applicationPoolDefaults> <processModel identityType="ApplicationPoolIdentity" /> </applicationPoolDefaults> </applicationPools>
統合モードでは ASP.NET アプリケーション キューが使用されないので、
パフォーマンス カウンター:"ASP.NET Applications\Requests in Application Queue"
の値が常に 0 になる
IIS 7 は web.config ファイルのASP.NET 変更通知設定に関係なく、
web.config ファイルを監視し、これが変更されると、
常に ASP.NET アプリケーションを再起動するため、
system.web/httpRuntime 構成セクションの
属性の効果がない。