2009-05-14 23 views
0

ASP.NET 2.0で作成されたアプリケーションを本番環境に展開しましたが、レイテンシの問題が発生しています。ページの読み込みに約4-5秒かかります。 GridViewのリフレッシュは、ロードするのに同じ時間を要しています。ASP.NETアプリケーションの展開の問題

デベロッパーボックスでアプリが正常に動作します。私はサーバー上で次のような調査を行った。

  1. 利用可能なメモリをチェック... 80%が使用された。
  2. サーバ設定が

    のWindows Server 2003 SP2 デュアル2.0 GZH 2ギガバイトのRAM

    である15%未満

、パフォーマンスモニタからプロセッサ... 1%

  • チェックディスクIOをchechedさ

    SQL Server 2005とIISのみを実行する

    トラブルシューティングの他に何かありますか?私もエラーのイベントログをチェックした、それはきれいだ。

    EDITED〜私が拾ったばかりの唯一の違いは、DEVボックスにあります。私はIE7を使用しています。クライアントはIE6を使用しています。

    UPDATE〜すべてのクライアントをIE8に更新し、パフォーマンスが30%向上したことに気付きました。私は最終的にweb.configファイルにdebug = trueを残していることを知りました。それをフラッシングする設定は、安定したパフォーマンスに戻ってアプリを持っていた...私はまだそれを信じられない。

  • +0

    独自のアプリケーションプールで実行していますか? prodサーバーのその他の構成設定は何ですか? –

    +0

    私はデフォルトの設定で別のアプリケーションプールを作成しました。 –

    +0

    PNGファイルのアルファ透明度の修正を行う場合、IE6の読み込みに時間がかかることがあります。あなたですか? –

    答えて

    1

    アプリケーションがデバッグモードで実行されていないことを再度確認します。 web.configファイルで、debug属性がsystem.web\compilationであることがfalseに設定されていることを確認します。

    アプリケーションの実行速度を遅くするだけでなく、システムメモリを増やすだけでなく、デバッグモードのときにはキャッシュされているため、ページ読み込みが遅くなります。

    +0

    これはまさに私の奇妙な監視でした!私は真剣に、愚かな間違いなどを作ったとは信じられない! –

    0

    テストと同じSQL Serverまたは別のSQL Serverに対して実行していますか?

    時間が到来してから、トレース・ステートメントをページ・ロードに追加し、トレースをオンにしてページをロードすることができます。それは問題を指摘するのに役立つかもしれません。

    また、開発ボックスの仕様は何ですか?同じ?

    +0

    異なるデータベースサーバーはありません。開発から生産までデータベースをコピーしました。仕様はほぼ同じです。開発用ボックスには1GB以上のRAMが搭載されています。 –

    +0

    これは、わずか1GBのRAMを備えたプロダクションSQLボックスがあることを意味しますか? – NotMe

    1

    ページサイズも確認してください。私の開発者の友人は、テーブル全体をviewstateにロードしました。ローカルマシンで開発するときに12メガバイトのページがスリップしますが、すぐに生産で顕著になります。

    +0

    どうすれば確認できますか? –

    +0

    ダウンロードFirebugとYSlow(この順番で、Firefoxのみ)。 YSlowはあなたのページを完全に分析します。 –

    2

    まず、トレースを有効にすることです。 (参照:http://www.4guysfromrolla.com/webtech/081501-1.shtml)を

    その後、あなたのページのビルドの各部分にかかる時間のアイデア与えるためにあなたのページ生成コードにポイントをトレース追加:

    System.Diagnostics.Trace.Write(
           "Starting Page init", 
           "TraceCheck"); 
    //Init page 
    
    System.Diagnostics.Trace.Write(
           "End Page init", 
           "TraceCheck"); 
    
    System.Diagnostics.Trace.Write(
           "Starting Data Fetch", 
           "TraceCheck"); 
    //Get Data 
    
    System.Diagnostics.Trace.Write(
           "End Data Fetch", 
           "TraceCheck"); 
    

    など

    することができますこの方法を各ステージがどれくらいの時間を取っているかを正確に見てから、そのエリアをターゲットにしてください。

    +0

    ありがとうございます。私はこれを撃つだろう。 –

    0

    Team Developerには、使用しているVisual Studioのバージョンによって、調査したいパフォーマンスウィザードがあります。

    また、IE 8を使用している場合は、プロファイラが用意されています。これにより、サイトがブラウザにどのくらいの時間ロードされているかを確認できます。最初に判断すべきことの1つは、時間がクライアント側かサーバー側かです。

    クライアント側では、あなたが持っているJavaScriptを見て、最適化/取り除きます。

    サーバー側の場合、すべてのパフォーマンスカウンタ(perfmon)を確認する必要があります。たとえば、膨大な量のJITが実行されているため、本番サーバーでクロールされたアプリがありました。

    また、Webサーバーとデータベースサーバー間の通信も調べる必要があります。どのくらいの時間がかかりますか?箱がディスクドライブをつぶしていますか?

    関連する問題