私はC#を使用してASP.Net 3.0で書かれたWebアプリケーションを持っています.本番マシンはIIS 6.0とSQLサーバー2005を搭載したWindowsサーバー2003です.
アプリケーションの構造
以下は、私の ASP.net Web アプリケーションの構造を示しています。
IIS のルート アプリケーション (//localhost/es) には、マスター ページ、テーマ、ユーザー コントロール、イメージ フォルダーなどの共通ページが含まれます。ルート アプリケーション (//localhost/es/sub-project) の下のサブプロジェクトの数。サブプロジェクトの web.config を削除します。サブプロジェクトのアセンブル ファイルは、ルート アプリケーションの bin フォルダーの下にあります (サブプロジェクトのプロパティ >> コンパイル >> ビルド出力パス: ..\bin\ 私のアプリケーションは 3 層 Web アプリケーションです(バイアス層、データ層、プレゼンテーション層. また、すべての aspx ページには cs ファイルの背後にあるコードがあります)
IIS 設定
アプリケーション プール "1740 分" 後のワーカー プロセスのリサイクル アイドル状態になった後のワーカー プロセスのタイムアウト "20 分" "30 秒" ごとにワーカー プロセスに Ping ワーカー
プロセッサの起動時間制限 "90 秒" "
アプリケーション構成
メモリ内の制限付き ASP ファイルをキャッシュする "500"
ディスク "2000" に制限付きの ASP ファイルをキャッシュする
アプリケーションのデプロイ:
Web アプリケーションとそのすべてのファイルを運用サーバーに公開します。
問題 :
アプリケーションの実行は最初はかなり遅く、ロードに 10 秒以上かかりますが、次にページが要求されるたびに高速になります。ページが最初に要求されたときにコンパイルされ、ページがキャッシュメモリにあるため、通常は他の要求よりも時間がかかると思います。ここでの質問は、最初にページをコンパイルするときに時間がかかるのはなぜですか?
問題を解決する試み:
私は次のことをしようとしました:
- 必要なファイルのコピーを本番サーバーにデプロイします。
- IIS 設定の変更、ワーカー プロセスのアイドル タイムアウト シャットダウンの変更
- トレースをオフにする
- セッション状態をオフにする
- ページのビュー ステートを無効にする
- web.config で debug=false を設定します
- root アプリケーションの下に hello world サブプロジェクトを作成すると、5 秒かかります。
- 上記のように、別の hello word Web アプリケーションを作成すると、ロードに時間がかかります。
- page_load イベント ハンドラーのコードを削除しましたが、パフォーマンスには影響しませんでした。
- ルート アプリケーションの必要なファイルのみを公開し (コード ビハインドにコードは記述されていません)、サブプロジェクトのソース コード内のすべてのファイル (コードはコード ビハインドにあります)、
ただし、アプリケーションの起動は依然として遅くなりますが、その後は高速になります。
この問題の診断と解決にご協力ください。