1. ホーム
  2. asp.net

[解決済み] IISの初期ロードの遅さを修正する

2022-05-18 10:55:56

質問

IIS には、低トラフィックの Web サイトで使用されていないワーカー プロセスを再利用する迷惑な機能があり、しばらくしてからサイトに最初にアクセスしたユーザーが非常に長い遅延 (30 秒以上) を受ける原因となっています。

この問題の解決策を探したところ、これらの潜在的な解決策が見つかりました。

A. Application Initializationプラグインを使用する

B. .NET 4で自動開始を使用する

C. アイドルタイムアウトを無効にする (IIS Resetの下)

D. サイトをプリコンパイルする

これらのうちどれが好ましいのか、さらに重要なことは、同じ問題に対してなぜこれほど多くの解決策があるのか、ということです。(私の推測では、それらはなく、私が何かを正しく理解していないだけだと思います)。

編集

実行中 C を実行することは、私のサイトを暖かく保つのに十分であるように見えますが、私のサイトの遅さの本当のルーツは、Entity Frameworkに関係していることを発見しました。参照 この の質問、どの 残念ながらまだ回答がありません が回答されました!

結局、私はただ ウォームアップスクリプト を作って、時折私のサイトを叩いて、スピードが保たれるようにしなければなりませんでした。

どのように解決するのですか?

オプション A、B、および D は、最初の起動時間にのみ影響し、コンパイルやメモリへのライブラリのロードなど、Web サイトのウォームアップを行うため、同じカテゴリに属するように見えます。

C を使用して、アイドル タイムアウトを設定すると、サーバーへの後続の要求が高速で処理されるようになります (アプリ プールを再起動すると、かなりの時間 (数秒単位) がかかります)。

私の知る限り、タイムアウトは、そのマシン上で並行して実行されている他の Web サイトが必要とする可能性のあるメモリを節約するために存在します。その代償として、ロード時間が 1 回だけ遅くなります。

ユーザーが活動していない場合にアプリ プールがシャットダウンされるという事実の他に、アプリ プールはデフォルトで 1740 分 (29 時間) ごとにリサイクルされます。

technet より。

インターネット インフォメーション サービス (IIS) のアプリケーション プールは、定期的にリサイクルすることができます。 定期的にリサイクルして、アプリケーションのクラッシュやハングアップ、メモリリークにつながる不安定な状態を回避することができます。 アプリケーションのクラッシュ、ハングアップ、またはメモリリークにつながる不安定な状態を回避することができます。

アプリ プールのリサイクルがオンのままである限り、それで十分です。 しかし、本当にほとんどのコンポーネントで最高のパフォーマンスを得たいのであれば、言及したアプリケーション初期化モジュールのようなものを使用する必要があります。