Web サイトおよび Web アプリケーションは、インターネット インフォメーション サービス (IIS) アプリケーション プールの可用性に依存しています。IIS アプリケーション プールもまた、Windows プロセス アクティブ化サービス (WAS) に依存しています。アプリケーション プールの開始または停止中に WAS が実行されていなかったりエラーが発生したりすると、Web サイトおよび Web アプリケーションが利用できない場合があります。
自動停止を行う実行可能ファイルをチェックする
アプリケーション プールが World Wide Web 発行サービス (W3SVC) によって停止されようとしているときに、ユーザー指定の実行可能ファイルを自動的に実行するように構成することができます。たとえば、実行可能ファイルは、アプリケーション プールへのトラフィックを別のサーバーにリダイレクトできます。このファイルは、IIS マネージャーで指定できます。ファイルは、ApplicationHost.configファイル内の system.applicationHost/applicationPools/failure セクションの autoShutdownExe 属性で表されます。
autoShutdownExe プロセスを実行できない場合、考えられる解決方法は以下のとおりです:
autoShutdownExe プログラムのパスとファイル名が適切に指定されていることを確認します。
システム アカウントに、このファイルにアクセスし実行するためのアクセス許可があることを確認します。
このプログラムが、アプリケーション プールの停止とは関係なく実行できることを確認します。
パスとファイル名が適切に指定されていることを確認する
[スタート] ボタンをクリックし、[コントロール パネル] をクリックして、[管理ツール] をクリックします。
[インターネット インフォメーション サービス (IIS) マネージャー] を右クリックし、[管理者として実行] を選択します。
[接続] ウィンドウで、サーバー名を展開します。
アプリケーション プールをクリックします。中央のウィンドウに、サーバー上のアプリケーション プールの一覧が表示されます。
中央のウィンドウで、確認対象となる、停止を行う実行可能ファイルが設定されているアプリケーション プールをクリックします。
[操作] ウィンドウで、[詳細設定] をクリックします。[詳細設定] ウィンドウが表示されます。
下にスクロールして、[ラピッド フェール保護] セクションを表示します。
[実行可能ファイルのシャットダウン] 項目を見つけ、右側にあるパスとファイル名を確認します。パスとファイル名が正しいことを確認します。
[OK] をクリックします。
停止を行う実行可能ファイルのアクセス制御リストをチェックする
コマンド プロンプト ウィンドウを管理者特権で開きます。[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[アクセサリ] をクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。
「start explorer」と入力します。
Windows エクスプローラーで、停止を行う実行可能ファイルに移動します。
ファイルを右クリックし、[プロパティ] を選択します。実行可能ファイルの [プロパティ] ダイアログ ボックスが表示されます。
[セキュリティ] タブをクリックします。
[グループ名またはユーザー名:] ウィンドウで、SYSTEM が表示されていることを確認します。SYSTEM が表示されない場合は、[編集] をクリックしてシステム アカウントを追加します。
[SYSTEM へのアクセス許可] ウィンドウで、停止を行う実行可能ファイルに対して少なくとも読み取りと実行のアクセス許可が、システム アカウントに付与されていることを確認します。
プログラムが独立して実行できることを確認する
アプリケーション プールの停止イベントとは別に、実行可能プログラムの実行をテストします。アプリケーション プールの停止とは関係なく、プロセスを実行できれば、アプリケーション プールが WAS によって自動的に無効になったときもプロセスが適切に実行されるはずです。
Target | Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool |
Category | Alert |
Enabled | True |
Alert Generate | False |
Remotable | True |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.Server.IIS.6.2.WarningAndErrorEventProvider | Default |
Filter | ConditionDetection | Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool.EventFilter | Default |
WA | WriteAction | Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.6.2.WAS.did.not.run.the.automatic.shutdown.executable.for.application.pool" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.Windows.Server.IIS.6.2.WarningAndErrorEventProvider">
<LogName>System</LogName>
</DataSource>
</DataSources>
<ConditionDetection ID="Filter" TypeID="Microsoft.Windows.InternetInformationServices.6.2.ApplicationPool.EventFilter">
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(5054|5091)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-WAS</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<WriteActions>
<WriteAction ID="WA" TypeID="Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.6.2.WAS.did.not.run.the.automatic.shutdown.executable.for.application.pool.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>