processModel 要素 (ASP.NET 設定スキーマ)

Microsoft Internet Information Services (IIS) Web サーバーでの ASP.NET プロセス モデルの設定値を構成します。 processModel セクションは Machine.config ファイル内だけで設定でき、サーバー上で実行されるすべての ASP.NET アプリケーションに適用されます。

Caution メモ注意

processModel 要素への変更は、ワーカー プロセスの再起動時に有効になります。他の構成要素のように、設定を変更した直後に有効になるわけではありません。詳細については、このトピックで後述する「解説」を参照してください。

<processModel 
   enable="true|false"
   timeout="hrs:mins:secs|Infinite" 
   idleTimeout="hrs:mins:secs|Infinite"
   shutdownTimeout="hrs:mins:secs|Infinite"
   requestLimit="num|Infinite"
   requestQueueLimit="num|Infinite"
   restartQueueLimit="num|Infinite"
   memoryLimit="percent"
   webGarden="true|false"
   cpuMask="num"
   userName="<username>"
   password="<secure password>"
   logLevel="All|None|Errors"
   clientConnectedCheck="hrs:mins:secs|Infinite"
   comAuthenticationLevel="Default|None|Connect|Call| 
               Pkt|PktIntegrity|PktPrivacy"
   comImpersonationLevel="Default|Anonymous|Identify|
               Impersonate|Delegate"
   responseDeadlockInterval="hrs:mins:secs|Infinite"
   responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
   autoConfig="true|false"
   maxWorkerThreads="num"
   maxIoThreads="num"
   minWorkerThreads="num"
   minIoThreads="num"
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   maxAppDomains="2000"
/>

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性

説明

autoConfig

マシン構成に基づいた最適なパフォーマンスを実現するために、自動的に次の設定を構成するかどうかを指定します。

値は、マイクロソフトのサポート技術情報 https://support.microsoft.com/?id=821268 に従って設定します。

この属性は ASP.NET アプリケーションだけに影響し、.NET Framework クライアント アプリケーションには影響しません。

autoConfig 属性は次のいずれかの値になります。

語句定義
True マシン構成に基づいた最適なパフォーマンスを実現するため、上記の属性を自動的に構成するように指定します。
False 上記の属性の定義に対して明示的に定義された値を使用するように指定します。

既存の構成が存在しない限り、Machine.config ファイルの既定値は True になります。

clientConnectedCheck

クライアントが接続されているかどうかを ASP.NET がチェックするまで要求がキューに置かれている時間を指定します。

既定値は "00:00:05" (5 秒) です。

comAuthenticationLevel

DCOM セキュリティの認証のレベルを指定します。

comAuthenticationLevel 属性は次のいずれかの値になります。

値説明
Call サーバーが各リモート プロシージャ コールの開始時に要求を受信したときに、DCOM がクライアントの資格情報を認証することを指定します。
Connect クライアントがサーバーとの接続を確立したときだけ DCOM がクライアントの資格情報を認証することを指定します。
Default DCOM が標準のセキュリティ ネゴシエーション アルゴリズムを使用して認証レベルを決定することを指定します。
None 認証を指定しません。
Pkt 受信したデータがすべて予測されたクライアントからのデータであることを DCOM が認証することを指定します。データグラム トランスポートでは、常に Pkt 認証を使用します。
PktIntegrity クライアントとサーバーの間で転送されたデータがまったく変更されていないことを DCOM が認証および検査することを指定します。
PktPrivacy DCOM が先行するレベルをすべて認証し、各リモート プロシージャ コールの引数値を暗号化することを指定します。

既定値は、Connect です。

comImpersonationLevel

COM セキュリティの認証レベルを指定します。

comImpersonationLevel 属性は次のいずれかの値になります。

値説明
Anonymous クライアントがサーバーに対して匿名であることを指定します。サーバーはクライアントを偽装できますが、偽装トークンに情報は格納されません。Anonymous は、.NET Framework Version 1.1 ではサポートされていません。
Default DCOM が標準のセキュリティ ネゴシエーション アルゴリズムを使用して偽装レベルを決定することを指定します。
Delegate サーバー プロセスがクライアントの代わりに動作しているときに、クライアントのセキュリティ コンテキストを偽装できることを指定します。サーバー プロセスがクライアントの代わりに動作しているときに、クローク設定を使用して、他のサーバーへ発信する呼び出しを作成することもできます。サーバーは、他のコンピューター上でクライアントのセキュリティ コンテキストを使用して、ローカル リソースおよびリモート リソースにクライアントとしてアクセスできます。このレベルで偽装する場合は、任意の数のマシン境界を通過して偽装トークンを渡すことができます。
Identify サーバーがクライアントの ID を取得できることを指定します。サーバーは ACL (アクセス制御リスト) チェックのためにクライアントを偽装できますが、システム オブジェクトにクライアントとしてアクセスすることはできません。
Impersonate サーバー プロセスがクライアントの代わりに動作しているときに、クライアントのセキュリティ コンテキストを偽装できることを指定します。このレベルの偽装は、ファイルなどのローカル リソースにアクセスするために使用できます。このレベルで偽装する場合は、1 つのマシン境界だけを通過して偽装トークンを渡すことができます。

既定値は、Impersonate です。

cpuMask

マルチプロセッサ サーバー上で ASP.NET プロセスの実行に使用できるプロセッサ (CPU) を指定します。 この値には、ASP.NET スレッドの実行に使用できる CPU を示すビット パターンを指定します。 たとえば、cpuMask の 16 進値 0x0d は、ビット パターン 1101 を表します。 CPU が 4 個あるコンピューターの場合、この値は、ASP.NET プロセスを CPU 0、2、および 3 でスケジュールでき、CPU 1 ではスケジュールできないことを示します。 ASP.NET は、使用できる CPU ごとにワーカー プロセスを 1 つ起動します。 webGarden 属性が true の場合、この属性はワーカー プロセス数を、実行に使用できる CPU 数に制限します。 ワーカー プロセス数の上限は、CPU の数と同じになります。 webGarden が false の場合、この属性は無視され、実行されるワーカー プロセスは 1 つだけになります。 これが既定の動作です。

既定値は、"0xffffffff" です。

enable

プロセス モデルが有効かどうかを指定します。

enable 属性は次のいずれかの値になります。

値説明
True プロセス モデルが有効であることを示します。
False プロセス モデルが有効でないことを示します。

既定値は、true です。

idleTimeout

ASP.NET がワーカー プロセスを自動終了するまでに無動作状態を持続できる時間を、時:分:秒の文字列形式で指定します。

既定値は、Infinite です。

logLevel

イベント ログに記録されるイベントの種類を指定します。

logLevel 属性は次のいずれかの値になります。

値説明
All すべてのプロセス イベントのログを記録することを指定します。
Errors 予測不可能なシャットダウン、メモリ制限シャットダウン、およびデッドロック シャットダウンのログだけを記録することを指定します。
None イベントのログを記録しないことを指定します。

既定値は、Errors です。

maxAppDomains

1 つのプロセスに許可されるアプリケーション ドメインの最大数を指定します。

この属性に指定できるのは 2000 以下の値です。

既定値は、2000 です。

maxIoThreads

プロセスで使用される、CPU ごとの I/O スレッドの最大数を設定します。 たとえば、プロセッサが 1 個のサーバー上でこの値が 25 である場合、ASP.NET はランタイム API を使用してプロセス制限値を 25 に設定します。 プロセッサが 2 個のサーバー上では、制限値は 50 に設定されます。 その属性の値は、httpRuntime 構成セクションの minFreeThread 属性の設定値以上である必要があります。

スレッドの種類については、「Improving ASP.NET Performance」の「Threading Explained」を参照してください。

この属性の範囲は 5 ~ 100 です。

既定値は、20 です。

maxWorkerThreads

プロセスで使用される、CPU ごとのワーカー スレッドの最大数を設定します。 たとえば、プロセッサが 1 個のサーバー上でこの値が 25 である場合、ASP.NET はランタイム API を使用してプロセス制限値を 25 に設定します。 プロセッサが 2 個のサーバー上では、制限値は 50 に設定されます。 その属性の値は、httpRuntime 構成セクションの minFreeThread 属性の設定値以上である必要があります。

スレッドの種類については、「Improving ASP.NET Performance」の「Threading Explained」を参照してください。

この属性の範囲は 5 ~ 100 です。

既定値は、20 です。

memoryLimit

ASP.NET が新しいプロセスを起動して既存の要求を再割り当てするまでにワーカー スレッドが消費できる最大メモリ サイズを、システム メモリ全体に対する割合として指定します。

既定値は、60 です。

minIoThreads

プロセスで使用される、CPU ごとの I/O スレッドの最小数を設定します。 「maxIoThreads」も参照してください。

スレッドの種類については、「Improving ASP.NET Performance」の「Threading Explained」を参照してください。

既定値は、1 です。

minWorkerThreads

プロセスで使用される、CPU ごとのワーカー スレッドの最小数を設定します。 「maxWorkerThreads」も参照してください。

スレッドの種類については、「Improving ASP.NET Performance」の「Threading Explained」を参照してください。

既定値は、1 です。

password

この属性および userName が存在する場合は、この 2 つの属性の組み合わせにより、設定された Microsoft Windows ID を使用してワーカー プロセスが実行されます。 パスワードを必要としない特殊なユーザー名である System と Machine、および暗号化されたワーカー プロセスの資格情報をレジストリ内に格納する方法の詳細については、「userName」を参照してください。

メモメモ
構成ファイルに資格情報を格納する場合は、セキュリティ リスクが伴います。詳細については、このドキュメントの「ユーザー名とパスワードのレジストリへの格納」を参照してください。

既定値は、AutoGenerate です。

pingFrequency

ワーカー プロセスが実行されているかどうかを確認するために ISAPI 拡張機能がワーカー プロセスを ping する時間間隔を標準プロセス モデル形式 (時:分:秒) で指定します。 ワーカー プロセスが pingTimeout 間隔内で実行されていない場合は、ワーカー プロセスが再起動されます。

既定値は、Infinite です。

pingTimeout

応答しない応答型ワーカー プロセスが再起動されるまでの時間間隔を標準プロセス モデル形式 (時:分:秒) で指定します。 ISAPI 拡張機能は、ワーカー プロセスを pingFrequency 間隔ごとに ping します。 ワーカー プロセスが pingTimeout 間隔内に応答しない場合は、ワーカー プロセスが再起動されます。

既定値は、Infinite です。

requestLimit

ASP.NET が現在のワーカー プロセスに代わる新しいワーカー プロセスを起動するまでに許可される要求の数を指定します。

既定値は、Infinite です。

requestQueueLimit

ASP.NET が "503 - サーバーがビジー状態です" というメッセージを新しい要求に返し始めるまでに、キューに置くことができる要求の数を指定します。

既定値は、5000 です。

responseDeadlockInterval

次に示す条件と一致した場合にワーカー プロセスが再起動されるまでの時間間隔を標準プロセス モデル形式 (時:分:秒) で指定します。

  • キューに置かれた要求が存在する。

  • この間隔内で応答がない。

既定値は "0:03:00" (3 分) です。

responseRestartDeadlockInterval

この属性は ASP.NET では現在使用されておらず、互換性のためだけに用意されています。 この属性が構成ファイルに存在する場合でも、構成エラーは発生しません。 デッドロック状態のイベントでのすべてのリサイクルは、現在 responseDeadlockInterval 属性によって制御されています。

既定値は "0:03:00" (3 分) です。

restartQueueLimit

標準ではない終了後にワーカー プロセスが再起動するまで待機している間に、キューに入れることができる最大要求数を指定します。 この設定は、問題のないシャットダウンまたは通常の再起動には適用されません。

既定値は、10 です。

serverErrorMessageFile

致命的なエラーが発生したときに既定の "サーバーを使用できません" というメッセージの代わりに使用する内容が保存されたファイルを指定します。 ファイルの位置は、Machine.config を基準にした相対ファイル パスまたは絶対ファイル パスで指定できます。 この属性が存在しない場合は、既定の "サーバーを使用できません" というメッセージが使用されます。

shutdownTimeout

ワーカー プロセスに与えられたシャットダウンするまでの時間を分単位で指定します。 タイムアウトの時間が経過すると、ASP.NET がワーカー プロセスをシャットダウンします。 この時間は、時:分:秒の文字列形式で指定します。

既定値は "0:00:05" (5 秒) です。

timeout

ASP.NET が現在のワーカー プロセスに代わる新しいワーカー プロセスを起動するまでの時間 (分の値) を指定します。

既定値は、Infinite です。

userName

ASP.NET が、Windows ID が既定のプロセス ID の Windows ID と異なるワーカー プロセスを実行することを示します。 既定では、この属性には Machine が設定され、プロセスは、ASP.NET のインストール時に自動的に作成された ASPNET というユーザー アカウント名で実行されます。 ASPNET アカウントのパスワードは、インストール時に暗号化されて生成されます。 この属性と password 属性に有効な資格情報が存在する場合は、指定されたアカウントを使用してプロセスが実行されます。 userName のもう 1 つの値として System があり、AutoGenerate というパスワードを持ちます。この値を設定すると、プロセスが管理者アカウントとして実行され、プロセスで実行されるすべての ASP.NET ユーザー コードに完全な管理者特権を割り当てることができます。 ドメイン コントローラーになっているサーバーでの ASP.NET の使用については、下記の「解説」を参照してください。

メモメモ
この属性と password 属性は、クリア テキストで構成ファイルに格納されます。Microsoft Internet Information Services (IIS) はユーザー エージェント要求に対して .config ファイルを送信しませんが、構成ファイルは別の手段で読み取ることができます。たとえば、構成ファイルは、サーバーのドメインで、適切な資格情報を持つ認証されたユーザーにより読み取られます。セキュリティ上の理由から、processModel セクションは、暗号化された userName 属性と password 属性をレジストリに格納することをサポートします。資格情報は、Windows 2000 および Windows XP のデータ保護 API 暗号化関数によって REG_BINARY 形式で暗号化されている必要があります。詳細については、このドキュメントの「ユーザー名とパスワードのレジストリへの格納」を参照してください。

既定値は、"machine" です。

webGarden

cpuMask 属性と共に使用された場合に CPU アフィニティを制御します。 マルチプロセッサ Web サーバーのことを Web ガーデンと呼びます。

webGarden 属性は次のいずれかの値になります。

値説明
True ASP.NET プロセスを実行する許可をどの CPU に与えるかを指定するために、cpuMask 属性を使用することを指定します。
False CPU の使用が Windows オペレーティング システムによってスケジュールされていることを示します。cpuMask 属性は無視され、ワーカー プロセスが 1 つだけ実行されます。

既定値は、False です。

子要素

なし。

親要素

要素

説明

system.web

ASP.NET 構成セクションのルート要素を指定します。ASP.NET Web アプリケーションを構成する構成要素やアプリケーションの動作を制御する構成要素が含まれます。

解説

マネージ コード構成システムは、processModel 構成設定を読み取りません。 processModel 構成設定は、aspnet_isapi.dll アンマネージ DLL によって直接読み取られます。 このセクションへの変更は、IIS ワーカー プロセスの再起動後に適用されます。

ASP.NET が IIS Version 6 でネイティブ モードで実行されている場合は、IIS 6 プロセス モデルが使用され、processModel セクションの一部の属性は無視されます。 ただし、次の属性は適用されます。

  • autoConfig

  • maxIoThreads

  • maxWorkerThreads

  • minIoThreads

  • minWorkerThreads

  • requestQueueLimit

  • responseDeadlockInterval

IIS 7 のプロセス モデルの詳細については、「Process Model Settings for an Application Pool (アプリケーション プールのプロセス モデル設定)」を参照してください。

プロセス ID、サイクル、または他のプロセス モデルの値を IIS 6.0 で構成するには、インターネット サービス マネージャーのユーザー インターフェイスを使用して、アプリケーションの IIS ワーカー プロセスを構成します。

メモメモ

IIS 6 を構成して IIS 5.0 分離モードで ASP.NET を実行する場合、ASP.NET 2.0 は使用できません。

時間の値は、"時:分:秒" の形式です。 コロンのない単一の数値が入力されると、その値は分と見なされます。このため、timeout="4" は timeout="00:04:00" と等価になります。

ASP.NET アプリケーションが原因で、ASP.NET ワーカー プロセス (Windows 2000 および Windows XP Professional の aspnet_wp.exe、Windows Server 2003 の w3wp.exe) が再起動され、デッドロック状態と考えられるため再起動が必要なことを示すエラー メッセージが表示される場合は、responseDeadlockInterval 属性の値を大きくしてください。

ドメイン コントローラーとローカル ASPNET アカウント

ドメイン コントローラーに .NET Framework Version 1.1 をインストールする場合、インストール時にローカル ASPNET アカウントは作成されません。 その代わりに、ASP.NET アプリケーションは次のように他の ID で実行されます。

  • Windows 2000 Server が稼動するドメイン コントローラーでは、ASP.NET アプリケーションは IWAM_machinename という ID で実行されます。

  • Windows Server 2003 が稼動するドメイン コントローラーでは、ASP.NET アプリケーションは NETWORK SERVICE という ID で実行されます (IIS 分離モードには関係ありません)。

状況により、ASP.NET をドメイン コントローラーで実行する場合は、インストールを正しく行うために特別な手順に従う必要があります。 .NET Framework Version 1.1 のドメイン コントローラーでの実行の詳細については、サポート技術情報 (KB) 検索ページ にアクセスし、文書 Q824308「Windows 2000 SP 4 を実行するドメイン コントローラーで、IWAM アカウントに ASP.NET 1.1 に対する偽装の権利が割り当てられない」を参照してください。 .NET Framework Version 1.0 のドメイン コントローラーでの実行の詳細については、サポート技術情報 (KB) 検索ページ にアクセスし、文書 Q315158「ドメイン コントローラーでデフォルトの ASPNET アカウントを使用すると ASP.NET が動作しない」を参照してください。

ユーザー名とパスワードのレジストリへの格納

ユーザー名とパスワードを暗号化し、レジストリに格納するには、userName属性 と password 属性を次のように設定します。

   userName="registry:HKLM\Software\AspNetProcess,Name"
   password="registry:HKLM\Software\AspNetProcess,Pwd"

キーワード registry とコンマ (,) の間の文字列は ASP.NET が開くレジストリ キーの名前を示します。 コンマ (,) の後ろの部分には ASP.NET が資格情報を読み取る文字列値の名前が 1 つ含まれます。 コンマ (,) が必要であり、資格情報が HKLM ハイブに格納されている必要があります。 構成形式が不正な場合、ASP.NET ではワーカー プロセスが起動されず、現在のアカウント作成エラー コード パスが表示されます。

資格情報は REG_BINARY 形式で、Windows API 関数 CryptProtectData の呼び出しの出力を含んでいる必要があります。 Aspnet_setreg.exe を使用すると、暗号化された資格情報を作成してレジストリに保存できます。 Aspnet_setreg.exe では、暗号化に CryptProtectData を使用します。 Microsoft Visual C++ のソース コードおよびドキュメントと同時に Aspnet_setreg.exe をダウンロードするには、ASP.NET の Web サイトに移動して、"aspnet_setreg" を検索します。

暗号化された資格情報を格納するキーにアクセス権を設定して、Administrators および SYSTEM だけがアクセス権を持つようにしてください。 キーは SYSTEM として実行されている ASP.NET プロセスによって読み取られるため、次のアクセス許可を設定してください。

Administrators:F
SYSTEM:F
CREATOR OWNER:F 
ProcessAccount: R

データを次の方法で保護するために役立ちます。

  • ACL アクセス許可で、データをアクセスする ID が Administrator である必要があります。

  • アカウントの資格情報を復元するには、攻撃者はサーバー上で CryptUnprotectData コードを実行する必要があります。

既定の構成

次の既定の processModel 要素は、Machine.config ファイルまたはルート Web.config ファイルで明示的には構成されていません。 ただし、これはアプリケーションにより返される既定の構成です。

<processModel 
   enable="true" 
   timeout="Infinite" 
   idleTimeout="Infinite" 
   shutdownTimeout="00:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10" 
   memoryLimit="60" 
   webGarden="false" 
   cpuMask="0xffffffff" 
   userName="machine" 
   password="AutoGenerate" 
   logLevel="Errors" 
   clientConnectedCheck="00:00:05" 
   comAuthenticationLevel="Connect" 
   comImpersonationLevel="Impersonate" 
   responseDeadlockInterval="00:03:00" 
   responseRestartDeadlockInterval="00:03:00" 
   autoConfig="true" 
   maxWorkerThreads="20" 
   maxIoThreads="20" 
   minWorkerThreads="1" 
   minIoThreads="1" 
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   asyncOption="20" 
   maxAppDomains="2000" 
/>

次の既定の processModel 要素は、.NET Framework Version 1.0 および 1.1 の Machine.config ファイルで構成されます。

<processModel
   enable="true"
   timeout="Infinite"
   idleTimeout="Infinite"
   shutdownTimeout="0:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10"
   memoryLimit="60" 
   webGarden="false"
   cpuMask="0xffffffff"
   userName="machine"
   password="AutoGenerate"
   logLevel="Errors"
   clientConnectedCheck="0:00:05"
   comAuthenticationLevel="Connect"
   comImpersonationLevel="Impersonate"
   responseRestartDeadlockInterval="00:09:00"
   responseDeadlockInterval="00:03:00" 
   <!-- In the .NET Framework version 1.1, the next two attributes are
        set to 20. -->
   maxWorkerThreads="25"
   maxIoThreads="25"
        />

要素情報

構成セクション ハンドラー

ProcessModelSection

構成メンバー

ProcessModel

構成できる場所

Machine.config

要件

Microsoft Internet Information Services (IIS) バージョン 5.0、5.1、または 6.0

.NET Framework Version 1.0、1.1、または 2.0

Visual Studio 2003 または Visual Studio 2005

参照

処理手順

方法 : Location の設定を使用して特定のディレクトリを構成する

方法 : ASP.NET 構成設定をロックする

参照

system.web 要素 (ASP.NET 設定スキーマ)

configuration 要素 (全般設定スキーマ)

System.Configuration

System.Web.Configuration

ProcessModel

ProcessModelSection

概念

ASP.NET プロセス ID の構成

ASP.NET 構成ファイルの階層と継承

ASP.NET 構成の保護

ASP.NET の構成のシナリオ

その他の技術情報

全般構成設定 (ASP.NET)

ASP.NET パフォーマンスの向上

ASP.NET 構成設定

ASP.NET Web サイト管理

ASP.NET 構成ファイル

ASP.NET 構成 API