IISには、リサイクルが発生する可能性のある2つの領域(2つ以上)があります。
そして
私の質問は:
アイドルタイムアウトは、Webアプリからアクションが要求されていない場合、プロセスがドロップしてメモリからすべてを解放することです。
リサイクルは、メモリリークの目的とシステムの健全性のために、処理が閉じられて再開されるアプリケーションでの強制的なアクションです。
両方のマイナスの影響は、通常、セッションを使用することであり、Recycleを高速化すると、アプリケーションの状態が失われます(ログインしているユーザーなどは、すべて「チェックアウト」しようとしている場合はログアウトされます)これは、リサイクルが非常に大きなタイムアウト値になっている理由です。だれもログインしていないので、アイドルタイムアウトは問題ではありません。
20分ごとに1人のユーザーがいる場合、ユーザーがロードするのを待たなければならない非常にアクティブなサイトではない場合、Webサイトは「最初の」応答でより速く応答するため、アイドルタイムアウトがなくなりますいう。したがって、20分に1回未満のWebサイトでは、各ユーザーのゼロからWebサイトを再度ロードする必要があるため、この値を増やす必要があります。しかし、長期間にわたってこれを0に設定すると、コードのメモリリークが一定の時間をかけてサーバーを完全に引き継ぐ可能性があります。
ここ から:
システムリソースを節約する1つの方法は、アプリケーションプールのワーカープロセスのアイドルタイムアウト設定を構成することです。 これらの設定が構成されている場合、ワーカープロセスは指定された非アクティブ期間後にシャットダウンします。アイドルタイムアウトのデフォルト値は20分です。
IISのデフォルトのアプリプールリサイクルが1740分に設定されているのはなぜですか
サーバーに数個のサイトがあり、常に高速でロードするようにしたい場合は、これをゼロに設定します。それ以外の場合、トラフィックがない状態で20分間いると、アプリプールは終了し、次回のアクセスで再び起動できるようになります。問題は、アプリプールへの最初のアクセスでは、アプリプールの作成、ASP.NETまたは別のフレームワークの読み込みが必要なため、アプリケーションの必要があるために遅い新しいw3wp.exeワーカープロセスを作成する必要があることです。ロードされます。それには数秒かかる場合があります。したがって、常に実行する必要のない多くのサイトをホストするサーバー用でない限り、チャンスがあるたびに0に設定します。
IISは現在
Idle Time-out Action : Suspend
設定
中断はプロセスをフリーズするだけであり、プロセスを破壊するよりもはるかに効率的です。
IIS上の一連のWebサービスを呼び出すデスクトップアプリを継承しました。 Webサービスは、(クライアントをオンにせずに)個別に時限プロセスを実行できる必要があります。したがって、それらはすべてタイマーを持っています。 Webサービスタイマーがシャットダウン(メモリリーク?)したため、アイドルタイムアウトを0に設定し、タイマーはオンのままです。