6

私は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 イベント ハンドラーのコードを削除しましたが、パフォーマンスには影響しませんでした。
  • ルート アプリケーションの必要なファイルのみを公開し (コード ビハインドにコードは記述されていません)、サブプロジェクトのソース コード内のすべてのファイル (コードはコード ビハインドにあります)、

ただし、アプリケーションの起動は依然として遅くなりますが、その後は高速になります。

この問題の診断と解決にご協力ください。

4

9 に答える 9

5

空が言ったことに加えて、展開プロセスの最後のステップとして「ウォームアップ スクリプト」を実行できます。これによって最初のコンパイルに必要な時間が短縮されることはありませんが、このようなスクリプトを使用すると、少なくとも起動が遅くなるのを防ぐことができます。このようなスクリプトの例については、こちらをご覧ください: http://programmerramblings.blogspot.com/2008/09/aspnet-site-warmup.html

アプリケーションへの最初のリクエストが遅いもう 1 つの理由は、IIS が最初のリクエスト中に asp.net ワーカー プロセスを開始する必要があることです。ただし、これは他のページへの最初のリクエストには影響しません。

于 2010-02-08T12:11:10.693 に答える
2

コピーするのではなく、プリコンパイルする Web サイトを公開します。

あなたが経験している行動は正常です。

于 2010-02-08T11:59:39.583 に答える
1

パッセンジャーを使用したRuby on Railsアプリケーションでも同じことがありましたが、Webサーバーがスリープ状態になるのを防ぐだけの優れたツール( http://www.wekkars.com )を見つけました。

于 2012-03-13T12:01:45.260 に答える
0

IIS 7.0 以前のバージョンで実行されている asp.net アプリケーションの場合、ウォームアップ プログラムまたはスクリプトを作成することが、アプリ プールのアイドル タイムアウトを防ぐ最善の方法です。このウォームアップ トリガーは、同じアプリケーションから、または外部の Web サイトやプログラムからセットアップできます。この記事では、同じことを達成するためのさまざまな方法を見つけることができます

于 2016-05-21T22:19:55.627 に答える
0
VBscript + Dos Batch file... run every 1 hr 


Dim strNewTime , strSiteName
strNewTime = Now() 
strNewTime = Replace(strNewTime, "/","")
strNewTime = Replace(strNewTime, " ","")
strNewTime = Replace(strNewTime, ":","") 

strSiteName = "https://www.yoursite.com/userlogin.aspx?dummytime=" + strNewTime

Dim oXMLHTTP
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")       

oXMLHTTP.Open "GET", strSiteName, False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then
'  working
ELSE
    CALL SendEmail("!!! www - web site is NOT working... " + strSiteName + " *** ") 
End If

Set oXMLHTTP = Nothing 
于 2014-12-01T17:08:54.000 に答える
0

サイトをプリコンパイルしてみてください:

http://msdn.microsoft.com/en-us/library/ms227972.aspx

于 2010-07-24T11:33:44.800 に答える
-4

これを回避する方法はありません。サイトがコンパイルされるため、最初の読み込みで常にわずかな遅延が発生します。

于 2010-02-08T11:59:11.847 に答える