web-dev-qa-db-ja.com

IISアプリケーションプールをリサイクルする必要があるのはなぜですか?

IISのアプリケーションプールは非常に頻繁にリサイクルされ、その理由を理解できません。リサイクルを余儀なくされたIIS6で起こりうる問題について読んだことを覚えていますが、クイック検索は空になります。IIS6または7では、アイドル時間、継続時間、特定の時間のリサイクルオプションをオフにできるため、問題は発生しません。

では、なぜすべての.netサイトがアプリケーションプールをリサイクルするのでしょうか。サイトにメモリリークがない場合、リサイクルする必要のないサイトを設定できますか?

これも失敗した場合、バックグラウンドタスクが呼び出されるようにするための最良の方法は何ですか。IISの自動再起動モジュールはありますか、またはこれらの呼び出しを行うために外部サービスを使用する必要がありますか?

あなたが本当に望んでいる/必要としているならそれは可能だと思いますか?

23
Daniel Little

Webサイトは(ステートレスな性質ではありますが)実行を継続することを目的としています。アプリプールのリサイクルがホスティングプラットフォームにとって有益であり、ウェブサイトとサーバーの両方が最適に実行されることを保証する理由は無数にあります。これには、アプリドメインに残っている動的にコンパイルされたアセンブリ、セッションキャッシュの使用(クリーンアップの保証なし)、amokを実行している他のウェブサイト、時間の経過とともに消費されるリソースなどが含まれます(これらに限定されません)。アプリプールは通常、複数のウェブサイトにサービスを提供できます、アプリプールのリサイクルは、すべてがスムーズに実行されるようにするために有益です。

アプリが再び起動したときの最初の起動に加えて、影響は最小限である必要があります。新しいワーカープロセスが開始されている間、Http.sysは要求を保持するため、要求は削除されません。

23
Matthew Abbott

https://weblogs.asp.net/owscott/why-is-the-iis-default-app-pool-recycle-set-to-1740-minutes から

固定されたリサイクルが必要かどうかを尋ねるかもしれません。毎日のリサイクルは、IISがわずかなメモリリークや、ワーカープロセスにゆっくりと忍び込むような何かがある場合に備えて、バンドエイドでリフレッシュします。理論的には、毎日のリサイクルは必要ありません。既知の問題がない限り、以前は完全にオフにすることをお勧めしていましたが、今日はオフピーク時に1日1回リサイクルするように設定しています。測定。

私の理由は、最初に、サイトはあまり影響を与えずにリサイクルを生き残ることができるはずなので、毎日のリサイクルは問題にならないはずです。次に、適切に動作するアプリプールでも、最終的にはアプリプールに影響を与える何かが潜んでいる可能性があることがわかりました。トラフィックパターンが原因でアプリケーションに過度のキャッシュや奇妙な問題が発生する問題を見てきました。また、非常にまれなIISバグ(本当にまれです!)毎日リサイクルされます。それは応急処置ですか?おそらく、毎日のリサイクルによって重大ではない問題が上に泡立つのを防いでいる場合、おそらくそうではない何かに関するトラブルシューティングの労力を節約することは良い予防策だと思いますトラブルシューティングが重要です。ただし、リサイクルによって抑制されている実際の問題があると思われる場合は、自動リサイクルをオフにして、問題を追跡して解決できるようにしてください。白黒の答えはありません。環境に最適な決定を下せるのはあなただけです。

IIS(私のように)の世界には、あまり知られていない人にとって、もっと便利で興味深い情報がたくさんあります。ぜひお読みください。

2
Orangutech