互換モードと分離モード
IIS6.0では、2つの動作モードが存在します。
デフォルトの設定では、「ワーカープロセス分離モード」で動作します。
以下に、双方の動作モードの違いを定義します。
「IIS5.0互換モード」では、IIS5.0のアプリケーション実行モデルに似た実行モデルで動作します。
IIS5.0のプロセス実行モデルには、実行レベル毎に3つのモードが存在します。
詳細について、以下に記します。
IIS6.0では、通常「IIS5.0互換モード」を使用することはあまりありません。
特別な理由等が無い限りは、「IIS6.0ワーカープロセスモデル」を利用することを強く推奨します。
以下に、「IIS5.0互換モード」を使用せざるを得ない状況を例として、いくつか挙げておきます。
※「IIS5.0互換モード」で利用する場合には、そのIISサイト全てに対して「IIS5.0互換モード」が摘要されます。
システム安定性を確保する為にも、想定状況に該当しないのであれば「IIS5.0互換モード」利用しないことを推奨します。
また、旧資産の流用は出来る限り暫定措置として、該当モジュールをビルドし直すことを推奨します。
パフォーマンスペナルティ
「高レベル(分離プロセスモード)」で動作している「IIS5.0互換モード」で、COMでRPC(Remote Procedure Call)機構を利用する場合、
パフォーマンスペナルティが生じる可能性があります。
以下に、想定される状況をいくつか挙げておきます。
※COMを利用したWebサーバアプリケーションの移行には注意が必要です。
また、管理者は、単体のWebアプリケーションから複数のWebサイトまで、どういう単位でも分離することが可能です。
これにより、特定のアプリケーションが影響してサイト全体が停止してしまうようなケースを回避することが出来ます。
アプリケーションを自分のプロセス空間から分離することは、管理タスクを単純化し、管理性の向上を図ることが可能になります。
管理タスクの項目としては、以下のものが挙げられます。
Webアプリケーションに対する、HTTPリクエストは、アプリケーションプール(W3wp.exeという名前で実行される)に
直接ルーティングされます。
このように、分離モデルでは完全にアプリケーションプールと、「InetInfo.exe」「Svchost.exe」等の関連サービスと分離されているので、
あるアプリケーションの不具合によるWebサーバ自体の共倒れは起こらなく、サービスの不通となるだけとなります。
また、アプリケーションプールは単一のワーカープロセスのみばかりでなく、複数のワークプロセスの管理
(Webガーデン)をする事が出来ます。
以下に、表として纏めたものを記します。
|ワーカープロセスモード|Network Service(デフォルト)
LocalService
LocalSystem
※デフォルトでは、権限の少ないアカウントでプロセスが実行される。|
「IIS5.0互換モード」では、「低」である場合「LocalSystem」アカウントが採用されます。
その為、セキュリティ低下の恐れがあるので、「低」での使用は推奨されません。
また、ワーカープロセスモードでも、特別な理由が無い限り、「Network Service」アカウントからの変更は認められません。
特に、インターネットにさらされる可能性のあるWebサーバーでは、変更することはまずあり得ません。
「.NET Framework」上の設定ファイル(machine.config)上のモード設定が有効になり、プロセス制御モデルが決定されます。
それに対し、ワーカープロセスモードでは、「IIS6.0」自身がプロセス制御モデルを決定し、「ASP.NET」プロセスを
制御するようになります。
IISの制御ポリシーが「.NET Framework」のそれよりも上位に位置し、上書きされます。
デフォルトの設定では、「ワーカープロセス分離モード」で動作します。
以下に、双方の動作モードの違いを定義します。
- IIS5.0互換モード
- このモードでは、IIS5.0のアプリケーションモデルに似た実行モデルで動作します。
あくまでも、既存アプリケーションの実行を最優先に考慮した場合にのみ、適用することが推奨されます。
- このモードでは、IIS5.0のアプリケーションモデルに似た実行モデルで動作します。
◆IIS5.0互換モード動作模式図
「IIS5.0互換モード」では、IIS5.0のアプリケーション実行モデルに似た実行モデルで動作します。
IIS5.0のプロセス実行モデルには、実行レベル毎に3つのモードが存在します。
詳細について、以下に記します。
レベル | 説明 |
低 | IISプロセス(InteInfo.exe)内のDLLとして実行され、他のプロセス内で実行されているプロセスから保護されない。 実行アカウントは「LocalSystem(管理者権限有り)」。 |
中 (プールプロセス) | 1つの「DLLhost.exe」が立ち上がり、プールされたアプリケーションは、全て「DLLhost.exe」プロセス内のDLLとして実行されます。 低、及び高レベルで実行されているプロセスからは保護されるが、プールされているプロセス内のアプリケーション同士は保護されません。 実行アカウントは、「IWAM_<ComputerName>」になります。 ※実行される「DLLhost.exe」は1つです。 |
高 (分離プロセス) | 複数の「DLLhost.exe」が立ち上がり、それが対応するアプリケーションを実行するモデルです。 他のアプリケーション、他のDLLhost.exeプロセスから保護されます。(プロセス同士が干渉しない) 実行アカウントは、「IWAM_<ComputerName>」になります。 |
IIS6.0では、通常「IIS5.0互換モード」を使用することはあまりありません。
特別な理由等が無い限りは、「IIS6.0ワーカープロセスモデル」を利用することを強く推奨します。
以下に、「IIS5.0互換モード」を使用せざるを得ない状況を例として、いくつか挙げておきます。
想定状況 | 説明 |
マルチインスタンスISAPIを 使用する場合 | ISAPIをサポートするDLLが、マルチインスタンス対応で作成されており、その資産をそのまま運用したい場合、 「IIS5.0互換モード」を利用します。 |
別プロセスと連携する場合 | 「IIS6.0ワーカープロセスモデル」では、あるワーカープロセスから別のワーカープロセスへ処理を依頼するような形で インプリメントされているものをサポートされません。 このような、旧資産をこのまま運用したい場合、「IIS5.0互換モード」を利用します。 |
プロセス中でセッションを情報を 保持する場合 | 「IIS6.0ワーカープロセスモデル」では、システム安定性を第一に考慮し、リサイクル機構を内臓しています。 リサイクル機構が実行されると、プロセスが途中で入れ替わる可能性があります。 その為、プロセス内部にセッション情報をもつような旧資産をそのまま運用する場合、「IIS5.0互換モード」を利用します。 |
※「IIS5.0互換モード」で利用する場合には、そのIISサイト全てに対して「IIS5.0互換モード」が摘要されます。
システム安定性を確保する為にも、想定状況に該当しないのであれば「IIS5.0互換モード」利用しないことを推奨します。
また、旧資産の流用は出来る限り暫定措置として、該当モジュールをビルドし直すことを推奨します。
パフォーマンスペナルティ
「高レベル(分離プロセスモード)」で動作している「IIS5.0互換モード」で、COMでRPC(Remote Procedure Call)機構を利用する場合、
パフォーマンスペナルティが生じる可能性があります。
以下に、想定される状況をいくつか挙げておきます。
想定状況 |
高レベルで実行中のアプリケーションにリクエストが送られ、応答が返るような場合。 |
高レベルで実行中のWebアプリケーションがリクエスト処理中にWebサーバとコミュニケーションを取る場合。 |
- ワーカープロセスモード
また、管理者は、単体のWebアプリケーションから複数のWebサイトまで、どういう単位でも分離することが可能です。
これにより、特定のアプリケーションが影響してサイト全体が停止してしまうようなケースを回避することが出来ます。
アプリケーションを自分のプロセス空間から分離することは、管理タスクを単純化し、管理性の向上を図ることが可能になります。
管理タスクの項目としては、以下のものが挙げられます。
- 「再起動」
- 「アプリケーションのコンポーネントの入れ替え」
- 「デバッグ」等
◆ワーカープロセス動作模式図
Webアプリケーションに対する、HTTPリクエストは、アプリケーションプール(W3wp.exeという名前で実行される)に
直接ルーティングされます。
このように、分離モデルでは完全にアプリケーションプールと、「InetInfo.exe」「Svchost.exe」等の関連サービスと分離されているので、
あるアプリケーションの不具合によるWebサーバ自体の共倒れは起こらなく、サービスの不通となるだけとなります。
また、アプリケーションプールは単一のワーカープロセスのみばかりでなく、複数のワークプロセスの管理
(Webガーデン)をする事が出来ます。
- ワーカープロセスモードの利点
- アプリケーションプール状態監視が可能
IIS6.0では、特定の条件でのアプリケーションプロセスを監視することが可能で、WWWサービスは条件に基づき
異常停止したアプリケーションを検出します。
これにより、アプリケーションプロセスの安定性を高めることが出来ます。 - Webガーデンの使用
アプリケーションプールが、単一のワーカープロセスの実行単位であるのに対し、Webガーデンは複数のワーカープロセス
をグルーピングしたものです。
Webガーデンで、複数のワーカープロセスをグループ化することで、信頼性と性能を向上させることが出来ます。 - IIS_WPGグループアカウントの新設
IIS_WPGグループは、IIS6.0で作成されるグループアカウントです。
このグループでは、IISで要求される権限の最小セットが設定されており、特定のユーザーアカウントを
認証する場合に利用できます。
本グループに登録されていないユーザーアカウントでは、ワーカープロセスを正常に起動することは出来ません。
- 動作モードでのセキュリティの違い
以下に、表として纏めたものを記します。
想定状況 | 使用セキュリティアカウント |
IIS5.0互換モード | 低:LocalSystem(デフォルト) 中、高:IWAM_<ComputerName> ※低レベルの場合は、管理者権限を持つアカウントでプロセスは実行される為、注意が必要とです。 |
LocalService
LocalSystem
※デフォルトでは、権限の少ないアカウントでプロセスが実行される。|
「IIS5.0互換モード」では、「低」である場合「LocalSystem」アカウントが採用されます。
その為、セキュリティ低下の恐れがあるので、「低」での使用は推奨されません。
また、ワーカープロセスモードでも、特別な理由が無い限り、「Network Service」アカウントからの変更は認められません。
特に、インターネットにさらされる可能性のあるWebサーバーでは、変更することはまずあり得ません。
- ASP.NETでのプロセス制御
「.NET Framework」上の設定ファイル(machine.config)上のモード設定が有効になり、プロセス制御モデルが決定されます。
それに対し、ワーカープロセスモードでは、「IIS6.0」自身がプロセス制御モデルを決定し、「ASP.NET」プロセスを
制御するようになります。
IISの制御ポリシーが「.NET Framework」のそれよりも上位に位置し、上書きされます。
2007年01月14日(日) 20:48:29 Modified by fmuser_y