マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

同時実行性を向上させるためのパラメタについて纏める。

サマリすると以下の様になる。

以下に、Windowsのチューニングの基本的な考え方と纏めておく。

machine.config

IIS 6 以前、IIS 7 以降のクラシック・モードではmachine.configで以下の設定を使用できる。

IIS 6 以前、IIS 7 以降のクラシック・モード + .NET 2.0

.NET 2.0では自動構成のプロセス モデルを導入したため、
殆どの用途で、KB821268に推奨される変更は不要とされている。

IIS 6 以前、IIS 7 以降のクラシック・モード + .NET 1.1

状況に応じて Machine.config ファイル内の以下のパラメーターを調整する。

ファイルの場所

設定方法

注:IIS 7.0 以降のバージョンの統合モードで実行されている場合は機能しない。

推奨設定

構成設定規定値 (.NET 1.1)推奨値
maxIoThreads?20100
maxWorkerThreads?20100
minFreeThreads?888*N
minLocalRequestFreeThreads?476*N
maxconnection212*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 4 以前

MaxConcurrentRequestsPerCPU 設定(下記のレジストリ設定)を使用してください。

IIS 7 以降の統合モード+.NET 3.5 以前

IIS 7 以降の統合モード+.NET 3.5 以前では以下のレジストリ設定を使用できる。

変更点

統合モードでは、ASP.NET スレッド設定を使用して要求の同時実行性を制御できない。

は、ASP.NET で使用されるスレッド メカニズムを制御しなくなりました。

設定方法

その代わり、ASP.NET は IIS スレッド プールに依存し、

を設定することで、同時実行要求の最大数を制御できるようになりました。

この設定はグローバルなので、

変更することはできません。

aspnet.config

IIS 7 以降の統合モード+.NET 3.5 SP1 以降

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

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>

補足

補足1 (統合モード)

統合モードでは ASP.NET アプリケーション キューが使用されないので、

パフォーマンス カウンター:"ASP.NET Applications\Requests in Application Queue"

の値が常に 0 になる

補足2 (IIS 7)

IIS 7 は web.config ファイルのASP.NET 変更通知設定に関係なく、
web.config ファイルを監視し、これが変更されると、
常に ASP.NET アプリケーションを再起動するため、

system.web/httpRuntime 構成セクションの

属性の効果がない。


Tags: :.NET開発, :ASP.NET


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS