6

.NET アプリケーションの起動/ウォームアップ時間を排除 (または少なくとも最小化) しようとしています。よくある懸念事項ですが、これを行う方法についてはよくわかりません。

.NET アプリケーションの起動が遅いことについて、たくさんの質問があります。これらは、プールのリサイクル、ワーカー プロセスの起動、.aspx ファイルの動的コンパイル、JIT などで簡単に説明できます。さらに、EntityFramework やアプリケーション キャッシュなど、アプリケーション内で初期化する必要があるものは他にもあります。

次のようなさまざまなソリューションがたくさん見つかりました。

ただし、上記の解決策のいずれにも完全に満足しているわけではありません。さらに、アプリケーションを Azure Web サイトにデプロイしているため (ほとんどの場合)、IIS へのアクセスが制限されています。

アプリケーションにリクエストを送信するためにさまざまな方法を使用するカスタム「ウォームアップ スクリプト」がいくつかあることは知っています (wget/curl など)。私の考えは、ASP.NET アプリケーションごとに "Warmup.aspx" ページを作成することです。次に、HTTP GET を各サイトの Warmup.aspx に 5 分ごとに送信するウォームアップ サービスがあります。このサービスは、Azure の WorkerRole またはオンプレミス インストールの Windows サービスである可能性があります。次に、Warmup.aspx は次のことを行います。

  • アプリケーション内の各 .aspx ファイルに HTTP GET を送信します (ページを動的にコンパイルするため)。
    • これは、aspnet_compiler.exe を使用して .aspx ページをプリコンパイルすることで回避できます。
  • データベースにクエリを送信して EntityFramework を初期化する
  • アプリケーションキャッシュなどを初期化する

最後の質問は、「Warmup.aspx」スクリプトよりも優れた代替手段があるかどうかです。それは良いアプローチですか、それとも他の方法をお勧めしますか? 上記の基準を処理する公式の方法が本当に欲しいです。

どんな提案でも大歓迎です、ありがとう!

4

2 に答える 2

0

サイトのインスタンスを 2 つ持つことができます。新しいバージョンをデプロイする必要があるために起動サイクルが発生する場合は、ロード バランサー ローテーションから 1 つのインスタンスを削除し、デプロイして起動し、それを設定して、インスタンス 2 に対して同じことを行います。ローリング デプロイ。

于 2012-08-07T22:15:37.767 に答える