web-dev-qa-db-ja.com

ASP.NET MVC-遅い初期ロード

最近、asp.net mvc Webアプリケーションを作成し、オンラインで公開しました。

最初にWebサイトをロードすると、実際に表示されるまでに10〜15秒ほどかかりますが、一度クリックすると、2回目と同じくらい早くロードされます。ウェブサイトがこれほど長くかかっている理由を誰かが知っているのではないかと思っています。

44

通常、アプリケーションドメインの起動時に、アプリケーションのロードには常に少し時間がかかります。

これを悪化させるのは、不十分なコード(IE:Application_Start)から使用している特定のライブラリ(ORMなど)に至るまで、あらゆるものです。ロードしたモジュールの数は?

まず、悪名高い<compilation debug="true">。これは、実稼働セットアップでパフォーマンスに重大な影響を及ぼす可能性があります。 「false」に設定してください!

アプリケーションの起動時間の改善」の行に沿ってグーグルを検索し、特定のアプリケーションに関連する可能性のあるものを探すことをお勧めします。

最初のコメントから更新:

30分後にアプリケーションが再び起動する(数秒間ハングする)場合は、IISのアプリケーションプールリサイクル設定に関連している可能性があります。

IIS Managerに移動します(これはv7 +を想定しています):

  1. アプリケーションプール
  2. アプリケーションに使用されているプールを右クリックします
  3. 「リサイクル」を選択すると、「リサイクル条件」というラベルの付いたウィンドウが表示されます
  4. これらの設定は、いつ自動的にアプリプールを強制終了して再起動するかを決定するため、これらの設定を調べます。

一般的なパフォーマンスの観点から、次のことを試してください。

  1. Application_Start()メソッドまたはその他の適切な場所に経過時間を吐き出すデバッグステートメントを追加して、最も時間がかかっているものをキャッチしようとします。
  2. 完全にクリーンなデモプロジェクトを作成して展開します。同じ問題が発生していないか確認してください。スローダウンが検出されるまで、実際のコードをどんどん導入しようとしない場合。

あなたがreallyの場合、#2がおそらく最も遅いオプションですが、最善の策かもしれません。

28
Timeout

また、asp.net mvcサイトの最初の読み込みが遅いという同じ問題がありました。最後に、最初の読み込みで非常に高速なサイトを読み込む最適な方法を見つけました。

私の解決策は、Windows Server 2008 r2およびIIS 7.5ですが、上位Windowsサーバーおよび上位IISバージョンでも動作しますが、いくつかの簡単な違いがあります。

まず、アプリケーションプールのstartModeを常に実行するように設定する必要があります。これにより、しばらくするとアプリケーションプールがスリープしなくなります。 (私の場合、このステップだけで、サイトの最初のロードが45-55秒から約8-12秒に変わります)

ステップ1では、Webサイトの最初の要求はありません。Webサイトをプリロードするために、iis7.5のApplication Initializationモジュールを here からインストールするという別のステップが必要です。

ステップ2では、Webサイトに対してpreloadEnabled = trueを設定する必要があります。このオプションは、アプリケーションの初期化がサイト設定に追加したものです。

これらのオプションの詳細と設定方法については、このブログ投稿を参照してください: http://blogs.iis.net/wadeh/application-initialization-part-2

ステップ2の後、私のWebサイトはわずか1〜3秒でロードされます

23
mesut

Jayが言ったことに加えて、アプリプールのメモリ使用量を考慮する必要があります。これは特に共有ホスティング環境に当てはまります。共有ホスティング環境では、通常、プロバイダーはメモリ制限に達すると(時間ベースではなく)アプリプールをリサイクルします。これにより、サイトが再び「再起動」し、初期読み込みのパフォーマンスの問題が発生します。

0
Simon Whitehead