web-dev-qa-db-ja.com

キャッシュに影響を与える場合のIISリセットとアプリケーションプールリサイクルの違いは何ですか

奇妙な問題が発生しました。私の知る限り、アプリケーションプールをリサイクルすることでキャッシュをクリアできます。

ただし、最近のプロジェクトでは、この方法でキャッシュがクリアされていません。代わりに、キャッシュをクリアするためにIISをリセットする必要がありました。

これらのアクションの違いは何ですか?また、私が経験した違いの原因は何ですか?

16
D.J

AppPoolをリサイクルすると、オーバーラップ時間が発生します。異常なワーカープロセスはリサイクルのマークが付けられていますが、すでに受け取った要求は引き続き処理します。 (新しいリクエストは処理しません)。不健康なワーカーは、既存のリクエストがすべて処理されると終了します。

IISリセットすると、すべてのワーカーが終了し、メモリ内のキャッシュがクリアされます。新しいリクエストが受信されると、新しいワーカーが作成されます。

したがって、AppPoolリサイクルとIISリセットの両方がキャッシュをクリアすると思います。私が知っているように、そのキャッシュはアプリケーションドメインに保存されています。異常なワーカープロセスが終了すると、すべてのキャッシュアイテムは破棄する必要があります。

13
Pongsathon.keng

詳細な説明については、次の記事を確認してください。 http://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/

要するに:

AppPool機能のリサイクルはIIS6で導入されました。

IISRESETは、すべてのIIS関連サービスを停止および開始します。すべてのコンポーネントを正常にシャットダウンしようとします。つまり、シャットダウン要求を送信し、サービスがシャットダウンするのを待ちます。すべてのサービスがシャットダウンするのを待ってから、再び起動します。

AppPoolリサイクルは、最初に新しいワーカープロセスを呼び出し、次に古いワーカープロセスをシャットダウンします。これにより、IISRESETよりもダウンタイムが短縮されます。

10
Pal R