0

OS: Windows Server 2012 スタンダード

IIS: 8.0.9200.16384

プロセッサー: 4x Xeon 2.67Ghz CPU

メモリ: 40GB

問題:

最近、IIS の AutoStart 機能を有効にしました。これにより、アプリケーション プールの起動時間が大幅に増加しました。アプリケーション プールは実行されているように見えますが、約 30 分間、CPU 使用率が最大 25% まで上昇しているように見え、そのプールで実行されている Web サイトは、これが完了するまで応答しません。イベント ログを確認しましたが、問題はないようです。プリロード関数でログを確認しましたが、これには約 60 ~ 90 秒しかかからないようです。

アプリケーション プールの起動の遅延の原因をどのように診断できますか?

バックグラウンド:

複数のアプリケーション プール (プールあたり 20 サイト) から、同じ ASP.Net MVC3 アプリケーションの複数のコピーを提供しています。約 8 つのプールが 160 のサイトにサービスを提供しています。サイトの起動時にデータベースからいくつかの設定をプリロードする IProcessHostPreloadClient を構築しています。同じ基本仕様の 2 台目のサーバーがありますが、20 個のプールが 3 つしかないため、プールごとに起動するのに約 5 分しかかかりません。

4

1 に答える 1

0

興味のある方のために、問題を解決/軽減するために私たちが行ったことを以下に示します。

  1. サイトをアプリケーション プールごとに小さなグループに分割します (これにより、アプリケーション プールごとの起動時間が短縮されます)。プールごとに 10 サイトを使用しました。
  2. サイトの初期化に serviceAutoStartProvider ではなく、IIS 8 Application Initialize 'PreloadEnabled' オプションを使用するように変更します。
  3. 新しいコードをデプロイするときは、アプリケーション プールを再起動しないでください。代わりに、app_offline.htm 機能を使用してアプリケーションをアンロードし、再起動してください。

app_offline.htm 機能は私たちにとって重要な機能です。これは、アプリケーション プールを停止および開始したり、起動時間にペナルティを課したりすることなく、ソフトウェアの新しいバージョンを展開できることを意味します。また、アプリケーション プールを段階的に再起動することで、CPU への負担を軽減できます。つまり、各プールの起動時間を一定に保つことができます。これは、IIS のリセットまたはサーバーの再起動を (まれに) 行う場合にのみ必要です。

于 2013-10-24T21:26:14.537 に答える