hostファイルが原因でIISのアプリケーションプールが停止する

これまで検証用のPCでIISが動作しないという現象にしばし出くわしていたが、その原因が判明した。通常利用ではあまり該当しないと思うが、検索しても出てこないので公開しておく。

現象

IISの起動後にWebアクセスすると「503 Service Unavailable」が返ってくる。IISマネージャで見てみるとアプリケーションプールが停止している。またWindowsイベントログには次のような警告が残されている。

イベントID: 5139
ソース: WAS
アプリケーション プール 'ASP.NET v4.0' に使われているワーカー プロセス '3336' のプロトコル 'http' に対するリスナー チャネルはリスナー チャネル エラーを報告しました。データ フィールドにはエラー番号が含まれています。

このデータフィールドには 80072AFC ( FC 2A 07 80 )が含まれている。

AppPoolの停止自体はこのエラーが5回連続で発生したためラピッドフェール保護により実行される(直後のエラーログ)。

原因

ネットで検索すると、コンピュータ名に空白を含む場合や実行ユーザの権限の問題などが出てくる。しかし今回の原因はhostファイルだった。

注釈:hostファイル
「C:\Windows\System32\drivers\etc\host」のテキストファイル。ホスト名-IPアドレスの対応を手動で設定する。DNSがないローカル接続の業務システムなんかではたまに利用されている。

このhostファイルに、自身のコンピュータ名に対して実際には無いIPアドレスが設定されていた。この設定を削除したら正常に稼働するようになった。

おそらくコンピュータ名から正引きしたIPアドレスに対してバインドしようとして、ソケットエラーが発生してたのだと推測される。

今回は検証用に流用したPCだったので、過去の設定が残っていてこのような現象が発生した。

以上。

コメント