実稼働 Web アプリの 1 つで、アプリ プールを手動でリサイクルすると、タスク マネージャーでの監視に基づいて、リサイクルされたワーカー プロセスが実際に完全に破棄されるまでに 60 秒以上かかる場合があることに気付きました。ただし、アプリ プールを完全に停止すると、ワーカー プロセスはほぼ瞬時 (1 ~ 2 秒以内) に終了します。
だから、私の質問は2つあります:
a) アプリケーション プールが停止する代わりにリサイクルされると、プロセスを破棄する (そしてより意味のあることに、プロセスによって使用/ロックされているリソースを解放する) のに時間がかかるのはなぜですか? と
b) トラフィックがサーバーに向けられるのを停止したと仮定すると、リサイクルの代わりに停止/開始しない理由はありますか?
編集:
明確にするために、アプリケーション プールをリサイクルまたは停止する前に、トラフィックが問題のサーバーに送信されるのを停止します (サーバーは負荷分散されたクラスターにあり、サーバーをロード バランサーから削除します)。したがって、理論的には、アプリケーション プールに対して何かを行っているときに Web サイトにリクエストが来ることはありません。
Part Deux の編集:
Igal のリンクを読んだ後、何が起こっているのかは明らかです。アプリ プールをリサイクルすると、新しいプロセスが開始されますが、トラフィックがまったくないため、新しいプロセスが機能していると登録されていないため、タイムアウト (90 分) になるまで古いプロセスはシャットダウンされません。秒)。
その知識があれば、「リサイクル」機能はライブサーバーの途中で使用することを特に意図していることは明らかです。事前に手動でトラフィックを排出しているので、代わりに停止/開始を使用する必要があります。