IIS 8.0でASP.NET MVC Webアプリケーションを実行しています。リクエストを受け取る前にアプリケーションをウォームアップする必要があります。新しいコードをデプロイするときに、アプリケーションを自動的にウォームアップするプロセスがすでにあります。ただし、アプリがウォームアップされない原因となる定期的なApp Pool Recycleイベントが確認されています。
アプリプールのリサイクルイベントを検出し、スクリプトまたはコードを実行するためのベストプラクティスはありますか?
できることはいくつかあります。
Application Initialization Module を使用できますIIS 8.0
_web.config
_にこのようなものを含めることができます
_<applicationInitialization
doAppInitAfterRestart="true" >
<add initializationPage="/" />
</applicationInitialization>
_
これにより、アプリが自動的に起動するたびに、アプリのルート(_initializationPage="/"
_)にリクエストが送信されます。
アプリケーションプールの開始モードを_Always Running
_に構成することもできます。これは、IISが再起動するたびに、アプリケーションプールをすぐに確実に開始することを意味します(これを右クリックした場合アプリケーションプール、次に_Advanced Settings
_
およびPreload
あなたのサイト自体(サイトを右クリックして_Manage Site
_、次に_Advanced Settings
_
さらに、アプリケーションプールの_Idle Time-out
_のを0(無限)に変更することにより、idleTimeoutを無効にすることができます(デフォルトではIISは20分間のアクティビティの後にアプリをシャットダウンします)。
また、デフォルトでRegular Time Interval (minutes)
をオフにするIISは、29時間ごとにアプリをリサイクルします。
For
私の経験から、AlwaysRunningとPreloadを有効にしても速度はそれほど向上しません。最も待機時間は、動的コンパイル(aspxプリコンパイルで修正できます)とアセンブリのメモリへの読み込みとキャッシュにかかります。