2012-02-14 21 views
3

現在、C#で書かれた.net Webアプリケーションでパフォーマンステストを実行しています。私は、Windowsサーバー2008で200人のユーザーの負荷をシミュレートするテストツールを持っています。作業中のCPUが高い

これは〜80%の非常にhign cpuの使用につながりました。私はそれが高いCPU使用率を引き起こしているWebアプリケーションの作業プロセスとして私のコードで問題になるかもしれないと感じています。

これをさらにデバッグして、これを引き起こしているコードでどのような問題が発生するのかを確認するにはどうすればよいですか?私にこれを手助けするために使用できるツールはありますか?私は状態を収集するためにサーバー上でperfモニタを実行していますが、これはこれまでのところ私を助けることに過ぎません。

+0

これはどうやってやったのですか? Diegoの答えは、あなたが高CPUを特定するのに近くなったのでしょうか? –

答えて

2

クライアントコード(200人のユーザーをシミュレートするテストツール)をサーバーから分離し、クライアントを別のマシンに配置します。

多くの場合、クライアントコードはボトルネックです。

3

エディションVisual StudioのUltimateとPremiumには、ほとんどのCPUを消費するメソッド呼び出しをすばやく見つけるのに役立つプロファイラが付属しています。参照:http://msdn.microsoft.com/en-us/library/ms182372.aspx

代替手段はです。ANTS Profilerは21日間の試用版ですが、本当に良いです。参照:

1

@Diegoの回答では最良の結果が得られない場合は、200から200,000人のユーザーをバンプしてDebugDiagを実行し、高いCPU設定でダンプをキャプチャしてボックスをクラッシュさせます。私はコメントとしてこれを言うつもりだったが、私は、私はあなたの手順与えるだろうと思って:IISで高いCPU使用率の問題を定義


高いCPUが識別されたときにIISプロセス(INETINFO.EXE、DLLHOST。 EXE、W3WP.EXE)は、着信要求への応答を停止し、過剰なCPU使用率のためにWebページを提供しません。以下の手順を使用して必要なデータを取得します。

トラブルシューティング手順

  1. サーバー上http://www.microsoft.com/downloads/details.aspx?FamilyID=9bfa49bc-376b-4a54-95aa-73c9156706e7&DisplayLang=enからDebugDiagをインストールします。既定のインストールパスはC:\ Program Files \ IIS Resources \ DebugDiagで、インストール中に変更できます。問題が発生する前にパフォーマンスモニタログを設定

  2. : - >プログラム -
    a)にオープンDebugDiag([スタート]> [IIS診断)
    b)は、[ツール]メニューに移動します - > [オプションと設定
    C)を選択しますパフォーマンスログ]タブ
    D)
    e「をパフォーマンスカウンタデータロギング有効にする」をクリックします)OK
    注クリックしてください:データのサンプリング間隔および監視を開始する時間は、CPUスパイクが再生したときに主観的なものです。

  3. デバッグ例外キャッチ(IIS5とIIS5)のチェックを外します。1)以下の手順で:
    A))IIS
    bについてMMCを開き、コンピュータ名を右クリックし、[プロパティ]
    Cをクリックしてください)マスターWWWプロパティ
    Dの[編集]ボタンをクリックして)ホームへ[ディレクトリ]タブ
    e)の下
    Fへの設定]ボタンをクリックして)「プロセスオプション」タブに移動し、
    グラム「をキャッチデバッグ例外を有効にする」のチェックを外し)OK

  4. はとハングルールを作成]をクリックします次の手順を実行します。
    [IISのハングアップ]を選択し、[次へ]をクリックします。
    c)[URLを追加]をクリックし、ハングアップを再現するURLを入力します。たとえば、次のように入力します。 http://ComputerName/HelloWorld.aspxと入力し、[OK]をクリックします。 「指定されたURLをテストする」と尋ねられたら、YESを選択します。
    D)[OK]をクリックし、次へ
    Eをクリック)、「ダンプターゲットを追加」し、所望のターゲットタイプ
    Fを選択)、[OK]をクリックし、次へ グラムをクリックします)、「ルール名」の[次へ]をクリックします。 「Userdump Location」はここで変更できます。
    h)[今すぐルールを有効にする]を選択し、[完了]をクリックします。 ステータスがアクティブであることに注意してください。ダンプファイルが作成されるたびに、Userdump Countが増加します。

  5. インストール時にサーバーのCPU状態が高い場合は、手動でデータを取得します。 DebugDiagで、[プロセス]タブに移動し、プロセスを右クリックして[完全なユーザーダンプを作成]を選択します。

  6. ストップパフォーマンスモニタのプロセスのダンプを取った後、約2分のログ: a)にオープンDebugDiag([スタート] - > [プログラム] - > [IIS診断)
    b)は、[ツール]メニューに移動します - > [オプションと設定
    C))パフォーマンスログ]タブ
    Dを選択し
    e「のロギングを無効にパフォーマンスカウンタデータ」をクリックしてください)OK

  7. をクリックして「高度な分析」タブを選択し、「データファイルの追加」をクリックすることでダンプを分析します。 C:\ Program Files \ IIS Resources \ DebugDiag \ Reportsにレポート(.mht)が作成され、表示されます。カスタムDLLを使用している場合、カスタムPDBファイルへのシンボルパス(ツールメニュー - >オプションと設定 - >シンボル検索パス)を追加することができます。

  8. DebugDiag [ツール]メニュー - > [インクリメントキャビネットファイルを作成)し、ここに投稿/このファイルを送信
+0

うわー、どうやってこれを成し遂げましたか?あなたは実際にテキストを 'INTERNET'(http://forums.iis.net/t/997780.aspx)からコピーする方法を見つけることができましたか? :O素晴らしい! ;) – user492238

+0

@ user492238それはテンプレートです。私たちはすべて、Microsoft Developer Supportを行う際にそれを使用しました。 –

+0

投稿するときにこれを明確にする必要があります。と理由を与えずにdownvotingはあなたに何か尊敬をもたらすことはありません...;) – user492238

1

興味深い答えを、これまでPsscor4ツールがある - 。。。SOS.dllデバッグ拡張機能の後継者は、それはより多くのライブデータを調査できますCLR。深くお勧めしますTess 'od Tomsブログでの読書。 ASP.NETデバッグのためのものがたくさんあります。

さらに、PerfViewツールをご覧ください。私はまだテストはしていませんが、CLPProfilerよりも大きなサイズのヒープを扱うことができると主張しています。

+0

Bang! psscoreは今公開されていますか?バング。それはコミュニティにとって最高です! –

+2

うん。既に知られていたよりも、msdnの開発者ブログに従ってください。 – user492238