1

XSサイズのインスタンスで、Azure WindowsでホストされているASP.NET(Webフォーム)アプリがあります。しばらく使用していなかった後に初めてサイトに移動するとき、45秒以上かかるなど、すべてがうまく機能しています!! 起動して実行すると、ページは素晴らしく高速です。時間がかかるのは初期ロードだけです。

この時間が費やされている場所をどのように診断できますか? 私はすでにSessionStartイベント内で(データベースへの)ロギングを行っており、異なるブラウザーで10秒離れて開始された2つのリクエストは両方とも同じ秒でログに記録されます. または、データベース接続に非常に長い時間がかかっている可能性があります。

これに影響を与える可能性が高いことがいくつかあることを認識しています。

  • XS インスタンス上にあります。彼らは大きくありません。

  • 私のコードは現在、デバッグ モードでビルドされています。これにより、ロードする必要のあるアセンブリと pdb ファイルが大きくなるため、実際よりも遅くなります。

  • サイトの読み込みには少し時間がかかります。これが、人々が idleTimeoutを変更し、場合によってはリサイクル間隔を変更する理由です。

  • 私は 32 MB の dll を含む、かなり大きい Telerik コントロールを使用しています。(ただし、最初のページでは何も使用されていません)。

しかし、何が起こっているのか、どれくらいの時間がかかっているのかを測定したり、起動を速くするためにできることを増やしたりするなど、常に何がかかっているかを特定するために使用できるアプローチが必要です。

ローカル データベースと Web を備えた私の開発マシンでは、起動時間はおそらく 5 秒です。XS インスタンスよりも 10 倍速いだけかもしれませんが、その場合、ローカル マシンで時間がかかっている原因を突き止めて、改善を試みるにはどうすればよいでしょうか?

4

1 に答える 1

2

XS インスタンスには専用の CPU がなく、I/O パフォーマンスが低いです。既にお気づきのように、これはアプリケーション プールの起動速度に影響を与える可能性があります。Telerik アセンブリ (32mb) をロードしているという事実は、ある程度の影響を与えますが、それは簡単に変更できるものではありません。

起動時間を改善するためにできることは次のとおりです。

  1. リリース ビルド構成を使用します。これは、(プリプロセッサ ディレクティブに応じて) より小さく、より少ないコードを含む最適化されたアセンブリが得られることを意味します。
  2. IIS8 に含まれているアプリケーション初期化モジュールを使用します(osFamily を 3 に変更する必要があります)。IIS は、アプリケーションがすぐに開始されることを確認し、アプリケーションを直接開始するためにアプリケーションへの要求をシミュレートします。ほとんどの場合、これはユーザーが初期ロードの影響を受けないことを意味します。起動中にサイトにアクセスした場合に備えて、アプリケーション初期化モジュールを使用すると、アプリケーション プールの起動中に読み込みページを表示できます。
于 2012-11-08T21:29:40.900 に答える