web-dev-qa-db-ja.com

しばらくすると最初のリクエストが常に遅くなる-ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS

Windows Server 2012 R2/IIS 8.5、1 GBのRAMを備えたVPSでトラフィックの少ないASP.NET MVC 5アプリケーションをホストしています。

私の問題は何の要求もない状態での最初の要求は常に遅い応答を得る-約1.5秒によるとChrome開発ツール。後続の更新要求/応答のみ)取る約45 ms

アプリケーションプールでStart ModeをAlwaysRunningに設定し、WebサイトレベルでPreload EnabledをTrueに設定しましたが、完全に効果なしでした。 。変更やアップロードがまったくない場合でも、しばらくすると、次のリクエストで応答を取得するのに1.5秒かかります。

12
michalstanko

問題は、IIS機能Application Initializationをインストールする必要があることです。その後、構成で動作するはずです。

画像は Rick Strahlのブログ からのものです。

IIS Feature

また、設定することを忘れないでください:

  • アプリケーションプールでStart ModetoAlwaysRunning
  • Preload EnabledtoTrueWebサイトレベル

この設定は、Application Initializationモジュールをインストールせずに設定できますが、影響はありません。

詳細情報 こちら

9

Webサーバーにインストールされている.NET Frameworkランタイムバージョンと比較して、Webサイトがターゲットにしている.NET Frameworkバージョン間にバージョンの不一致がある可能性はありますか?

また、プリコンパイルされていない、または更新可能なWebサイトを展開していますか? -

Advanced Precompile Settings

.NETランタイムバージョンのアップグレードは、上位互換性を維持するためのものです。ただし、.NET 4.5.1 Frameworkをターゲットとする複数のWebサイトをWindows Server 2008 R2サーバーから.NET 4.6ランタイムにパッチが適用されたWindows Server 2012 R2サーバーに移行すると、非常によく似た問題が発生しました。 (複数のWebサイトでの)最初のページの読み込みはすべて、個々のページごとに1秒ではなく2分かかりました。そして、さまざまなIIS設定での私の実験はすべて、問題の解決に失敗しました。

最終的に、私は2つの方法のいずれかで問題を解決することができました:

  1. サーバーを完全に再作成し、.NET 4.5ランタイムにパッチを適用して、問題を解決しました(レジストリ設定を 。NET 4.6.1のインストールをブロックする に追加するとともに)。
  2. または、「プリコンパイル」をチェックし、「更新可能」をオフにしてWebサイトを再デプロイすると、問題が解決しました。

対照的に、サーバーで.NET 4.5ランタイムに 。NETランタイムバージョンをロールバックまたは修復する を試みても、ページの読み込みの問題は解決しませんでした。 (本質的には クリーンで信頼できるプロセスはありません .NETランタイムを完全にロールバックして、サーバーを再イメージングする必要はありません。)

0
Mac