4

私は自分のWebサイトでEF4を使用していますが、非常に厄介な問題を発見しました。最初の実行のロード時間は非常に遅いです。(約20-30秒)。最初の実行後-それは本当に速く動作します。

「最初の実行」とは、長時間(10分程度)アクティビティがない状態での実行を意味します。

したがって、トラフィックが多い場合、サイトは正常に機能しています。遅い日がある場合-長い交通の休憩の後に最初にサイトに来る日は、非常に悪い経験になります。

WebサイトもAPIを公開しているため、同じことがそこで起こります。それを最初に呼び出す-彼の側でタイムアウトが発生します。

私のDBはSQLServer2008R2です。

なぜこれが起こっているのか考えはありますか?解決する方法は?

ありがとう!

4

3 に答える 3

3

EF の可能性もありますが、IIS またはその組み合わせでアプリ プールがリサイクルされている可能性もあります。

Web サイトの使用が遅い期間があり、発生した訪問者のために各ページを高速にロードしたい場合、過去に、特定の間隔で Web サイトにアクセスするように時間指定ジョブをセットアップしました (約 5 分で動作しました)。私にとっては)、訪問者が来たときにいつでも準備ができていることを確認しました.

タスク スケジューラにアクセスできる場合は、非常に簡単に実行できます。

于 2012-08-16T22:16:49.570 に答える
1

私もこの問題を抱えていました。データベース内の多数のビューに関係していることがわかりました。

パフォーマンスに関する考慮事項 (Entity Framework)は非常に役に立ち、ビュー生成の影響を軽減するための手順により、45 ~ 60 秒かかっていた初期読み込みが 3 ~ 4 秒に短縮されました。

于 2013-05-01T16:01:35.420 に答える
0

EF、DB、または IIS であることを特定するために、もう少し調査を行います。@EJ Brennanが述べたように、IISが犯人である可能性が高いと思います。

IIS では、IIS アプリケーション プールがリサイクルされていないことを確認しますが、エンド ユーザーへの影響を少なくするために頻度を管理できるのは通常のことです。EF はおそらく問題ではありませんが、アプリまたは DB のキャッシュによって、基になる SQL の問題が隠される可能性があります。クエリをキャプチャし、実行計画を分析して最適であることを確認します。

これが問題の特定に役立つことを願っています。

于 2012-08-16T22:20:30.763 に答える