PR
Q

IIS(Internet Information Server)4.0のシステムで,イベント・ビューアからアプリケーション・ログを確認してみたところ,見たこともないイベントが記録されていました(図4)。特にシステム上問題はないようですが,何が起こっているのでしょうか?


△ 図をクリックすると拡大されます
図4●[処理外のアプリケーション‘/LM/W3SVC/1/Root’を予期せず終了しました]というメッセージが表示されたマシンに記録されていたイベント・ログ

A

図4のイベント・ログは,外部プロセスで動作するASP(Active Server Pages)アプリケーションがいったん停止し,必要に応じて再起動されたという内容です。恐らくASPアプリケーションになんらかの問題があり,それによって再起動したのでしょう。


△ 図をクリックすると拡大されます
図5●IIS 4.0でアプリケーションを実行する場合,選択肢は2つある

 IISには,ASPアプリケーションを実行するプロセス・モデルがいくつか用意されています。1つはインプロセスというもので,ブラウザからのHTTPリクエストを受け取るInetinfo.exeと同じプロセスでアプリケーションを実行するというものです。[別メモリ領域で実行する(分離プロセス)]にチェック入れていない状態がインプロセスです(図5)。

 インプロセスは,アプリケーション実行時に外部プロセスを生成するオーバーヘッドがゼロになるため,パフォーマンスが高いのが特徴です。その半面,アプリケーション・エラーなどで停止してしまうと,Inetinfo.exeは,複数のサービスを提供しているため,IISADMINサービスやW3SVCサービス,SMTPSVCサービス,MSFTPSVCサービス,NntpSvcサービスが一度に停止することになります。

 一方,[別メモリ領域で実行する(分離プロセス)]にチェックを入れると,アウトプロセスという状態でアプリケーションが実行されます。Inetinfo.exeとは別の外部プロセスmtx.exeでASPアプリケーションが実行されます。このモデルでは,アプリケーション実行時に外部プロセスを生成するオーバーヘッドが発生しますが,外部プロセス内でアプリケーション・エラーなどの致命的なエラーが発生しても外部プロセスのみ終了され,Inetinfo.exeには影響が及びません。

 つまり,今回のトラブルは,ASPアプリケーションはアウトプロセスよって実行されていたため,サーバーが起動しなくなったなど,目に見える現象は特に発生していなかったものと思われます。このイベントに関しては,発生頻度が低ければ無視できる場合が多いと思います。しかし,発生頻度が高い,あるいは特定のオペレーションにより必ず発生するなどの場合,エラーの根本原因を調べるには,外部プロセスで発生するエラーを追跡する必要があります。

小森 博司