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


12

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

私の問題は、Chrome Dev Toolsによると、何のリクエストもない状態の最初のリクエストの応答が常に遅くなるということです-約1.5秒。後続の更新要求/応答には、約45ミリ秒しかかかりません。

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

回答:


9

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

画像はリック・ストラールのブログからです:

IIS機能

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

  • アプリケーションプールでStart ModeからAlwaysRunning
  • WebサイトレベルでPreload Enabled to True

この設定は、アプリケーション初期化モジュールをインストールせずに設定できますが、効果はありません。

詳細はこちら


0

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

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

高度なプリコンパイル設定

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

最終的には、次の2つの方法のいずれかで問題を解決できました。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.