40

実稼働 Web アプリの 1 つで、アプリ プールを手動でリサイクルすると、タスク マネージャーでの監視に基づいて、リサイクルされたワーカー プロセスが実際に完全に破棄されるまでに 60 秒以上かかる場合があることに気付きました。ただし、アプリ プールを完全に停止すると、ワーカー プロセスはほぼ瞬時 (1 ~ 2 秒以内) に終了します。

だから、私の質問は2つあります:

a) アプリケーション プールが停止する代わりにリサイクルされると、プロセスを破棄する (そしてより意味のあることに、プロセスによって使用/ロックされているリソースを解放する) のに時間がかかるのはなぜですか? と

b) トラフィックがサーバーに向けられるのを停止したと仮定すると、リサイクルの代わりに停止/開始しない理由はありますか?


編集:
明確にするために、アプリケーション プールをリサイクルまたは停止する前に、トラフィックが問題のサーバーに送信されるのを停止します (サーバーは負荷分散されたクラスターにあり、サーバーをロード バランサーから削除します)。したがって、理論的には、アプリケーション プールに対して何かを行っているときに Web サイトにリクエストが来ることはありません。


Part Deux の編集:
Igal のリンクを読んだ後、何が起こっているのかは明らかです。アプリ プールをリサイクルすると、新しいプロセスが開始されますが、トラフィックがまったくないため、新しいプロセスが機能していると登録されていないため、タイムアウト (90 分) になるまで古いプロセスはシャットダウンされません。秒)。

その知識があれば、「リサイクル」機能はライブサーバーの途中で使用することを特に意図していることは明らかです。事前に手動でトラフィックを排出しているので、代わりに停止/開始を使用する必要があります。

4

4 に答える 4

31

a)重複リサイクルのため。「古い」プロセスが新しいプロセスの開始を待機する期間があります。

b) いいえ。私の知る限りでは。

于 2008-12-24T17:54:21.383 に答える
15

正しく思い出すと、リサイクルによって既存のすべての要求が終了し、アプリケーション プールがリサイクルされます。停止は、停止した瞬間に停止するだけです。

于 2008-12-24T17:52:09.017 に答える