web-dev-qa-db-ja.com

アプリプールのリサイクル後にasp.net mvc webappをウォームアップするにはどうすればよいですか?

IIS 8.0でASP.NET MVC Webアプリケーションを実行しています。リクエストを受け取る前にアプリケーションをウォームアップする必要があります。新しいコードをデプロイするときに、アプリケーションを自動的にウォームアップするプロセスがすでにあります。ただし、アプリがウォームアップされない原因となる定期的なApp Pool Recycleイベントが確認されています。

アプリプールのリサイクルイベントを検出し、スクリプトまたはコードを実行するためのベストプラクティスはありますか?

24
AgileJon

できることはいくつかあります。

1.アプリケーションの初期化

Application Initialization Module を使用できますIIS 8.0

_web.config_にこのようなものを含めることができます

_<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>
_

これにより、アプリが自動的に起動するたびに、アプリのルート(_initializationPage="/"_)にリクエストが送信されます。

アプリケーションプールの開始モードを_Always Running_に構成することもできます。これは、IISが再起動するたびに、アプリケーションプールをすぐに確実に開始することを意味します(これを右クリックした場合アプリケーションプール、次に_Advanced Settings_

enter image description here

およびPreloadあなたのサイト自体(サイトを右クリックして_Manage Site_、次に_Advanced Settings_

enter image description here

2.アイドルタイムアウトを無効にする

さらに、アプリケーションプールの_Idle Time-out_のを0(無限)に変更することにより、idleTimeoutを無効にすることができます(デフォルトではIISは20分間のアクティビティの後にアプリをシャットダウンします)。

enter image description here

3.定期的なリサイクルを無効にする

また、デフォルトでRegular Time Interval (minutes)をオフにするIISは、29時間ごとにアプリをリサイクルします。

enter image description here

For

55
ahmelsayed

私の経験から、AlwaysRunningとPreloadを有効にしても速度はそれほど向上しません。最も待機時間は、動的コンパイル(aspxプリコンパイルで修正できます)とアセンブリのメモリへの読み込みとキャッシュにかかります。

1
zmikic