web-dev-qa-db-ja.com

iisreset、リサイクル、更新、再起動の違いは何ですか?

IIS7では、Webサイトを再起動するように思える多くのことができます。それらがどのように関連しているかは正確にはわかりません。

  • コマンドラインからiisresetを実行する
  • ウェブサイトを更新する
  • アプリプールをリサイクルする
  • ウェブサイトを再起動する

誰かがそれぞれが何をしているかを正確に説明できますか?

56
jimconstable

iisresetは、World Wide Web Publishing Serviceを停止および開始します。もちろん、これはすべてのアプリケーションプールに適用されます。アプリケーションプールごとにプロセスが作成されることに気づいたと思います。このプロセスは、関連付けられているすべてのWebサイトの要求を処理します。 アプリケーションプールをリサイクルするの場合、IISは新しいプロセスを作成し(古いプロセスを維持))要求を処理します。次に、新しいプロセスですべての要求を移動しようとします。タイムアウト後、古いプロセスは自動的に強制終了されます。通常、リークしたメモリを取り除くためにアプリケーションプールをリサイクルします(これを定期的な操作にする必要がある場合、アプリケーションで問題が発生する可能性がありますが、スケジュールされたリサイクル)ウェブサイトの再起動に関しては、特定のウェブサイトへのリクエストの提供を停止して再開するだけです。同じアプリプールで他のウェブサイトへのサービスを中断することなく継続します。

セッション指向のアプリケーションを使用している場合、上記のすべてがセッションオブジェクトの損失を引き起こします。

Webサイトの更新はサービス/プロセス/ Webサイトには影響せず、ツリービューを更新するための単なるUIコマンドです(管理コンソールに表示されないディレクトリを追加した可能性があります)。

63
Vlad Mucescu

他の2つの質問に答えるには:

  • Webサイトを更新すると、サーバーからデータがリロードされます
  • ウェブサイトを再起動しても、あまり効果はありません。 Webサイトを停止することにより、そのバインディングのいずれかで要求をリッスンしなくなります。もう一度起動すると、再びリスニングが開始されます。 Webサイトにサービスを提供するプロセスは影響を受けません。
5

iisresetは、Webサーバー全体を停止および開始します。これがすべてです-これが起こっている間、すべてのユーザーは接続を失います。

アプリケーションプールをリサイクルすると、そのプールにあるアプリケーションに関連付けられているプロセスが停止して開始されます。厳密に言うと、Webサイトとは何の関係もありません(これらのアプリケーションのアクティブコンテンツを除く)。

4
mfinni

@Vlad Mucescuは良い答えを出しましたが、重複リサイクルについて彼が話すアプリケーションのリサイクルについて説明している部分のようです。リサイクルには2つのタイプがあります。プロセスリサイクルと重複リサイクル( source MSDN ):

プロセスのリサイクル

ワーカープロセス分離モードは、プロセスリサイクルを提供します。このモードでは、IISは、ワーカープロセスを再起動することにより、Webアプリケーションを自動的に更新します。プロセスリサイクルは、問題のあるアプリケーションを円滑に実行し続け、そうでない場合に特に効果的なソリューションです。アプリケーションコードを変更することが可能です。
リサイクルイベントの発生に続くプロセスリサイクルは、2つの方法で発生する可能性があります。
現在アプリケーションプールを提供しているワーカープロセスが終了すると、ワーカープロセスの親プロセスとして機能するWWWサービス(W3SVC)が、代わりに新しいプロセスを再起動します。
ワーカープロセスが終了すると、新しいプロセスが同時に開始されます。このタイプのリサイクルは、オーバーラップリサイクルと呼ばれます。これは、すべてのアプリケーションプールのデフォルトです。

重複したリサイクル

オーバーラップしたリサイクルシナリオでは、リサイクル対象のプロセスが残りのすべての要求を処理し続け、代わりのワーカープロセスが同時に作成されます。古いワーカープロセスが停止する前に新しいプロセスが開始され、要求は新しいプロセスに送られます。この設計は、新しいプロセスが正常に初期化されるまで古いプロセスが要求を受け入れ続け、新しいプロセスが要求を処理する準備ができた後にのみシャットダウンするように指示されるため、サービスの遅延を防ぎます。

2
Mikhail