web-dev-qa-db-ja.com

Webサービスの再起動に必要な構成の変更は何ですか?

特定の(Webサーバー)構成の変更にはサービスの循環が必要であるという印象を受けています。

  • サービスの再起動が必要な特定の変更についての経験則はありますか、それとも単に良い習慣ですか?サーバーは、サービスを切り替える必要があるときに常に通知しますか?
  • 最初にサービスを再起動する必要があるサービスを再起動すると、実際にどのような変更が発生しますか?

具体的にはIIS)を参照していますが、他のWebサーバーにも同じ要件があるかどうかを知りたいと思います。

2
Gary

IIS 7の時点で、私が考えることができるものはほとんどありません。WASはオプションのコンポーネントをロードせず、単にその処理を実行します。

IIS 6は、InetInfo.exeで、メタベースから/メタベース内/メタベース内の構成のメモリ内コピーをホストします。それが詰まった場合、すべてが(通常は一度に)失敗し、サービスの再起動が必要になります(可能であればIISRESET/NOFORCE)。

99%の確率で、アプリプールをリサイクルしてサービスを復元するか、特に扱いにくいアプリケーションに構成を再読み込みさせるだけで十分です(ファイル変更通知からハンドルが漏れている場合、人生に飽きている場合、または単にぶら下がっている)。 IIS 6+のワーカープロセス分離(モード)は、ほとんどの障害が単一のプロセスに制限され、リサイクルが通常機能し、次の要求で新しいワーカープロセスを開始することを意味します。

他の場合と同様に例外もありますが、「純粋な」Webアプリの経験則として、あなたがする必要があるのはそれだけです。

COMアプリ、Webサーバープロセス自体の外部の状態を使用するアプリなどは、より厄介な場合があり、一部のアプリはそれ自体の複数のインスタンスをサポートしません(シャットダウンしたものが起動したものをハングします)。少し詰め込まれていますが、全体的には...動作します。

IIS7はメモリ内のコピーをホストせず、関連するプロセスは構成ファイルを直接読み取る方法を知っています。

WAS(Windows Process Activation Service)は、構成ファイルを読み取り、それらをアプリプール用に切り分け(Inetpub\Temp\AppPoolsを参照)、ワーカープロセスが独自の構成を読み取れるようにします。これが壊れて再起動が必要になるような状況はあまり見たことがありません。

InetInfoは、IIS <= 6とは異なり、稼働中のサーバーではIIS 7に存在する必要はありません。これは、通信する必要のあるアプリとの互換性のために純粋に存在します。メタベースエミュレーター(管理ベースオブジェクト、ADSI、レガシーIIS 6 WMI、そのようなもの))。

いつサービスを再開するかについて:

  • めったにありません
  • WASが、生きたくないように読み取られるエラーをログに記録している場合
  • すべてが一度にヒープに分類される場合(および個々のアプリプールがリサイクル対象として識別できない場合

ただし、それ以外の場合は、通常、アプリプールをリサイクルするだけで回復できます。

同様の流れで別の回答も参照してください(ええ、私のものも): 応答しない/ハングした/壊れたを解決しようとするときに取るべき手順IIS Webサイト?

HTH

1
TristanK

通常、構成の変更にはWebサーバーの開始/停止が必要です。 Webサーバーは構成ファイルを読み取り、起動時にそれらを適用します。 Webサーバーは、実行時に構成ファイルを動的に読み取りません。

0
iPhone Guy