0

サーバーのHttpRequestのパフォーマンスを測定する方法は?HttpRequestのパフォーマンスを測定する

私はそれが重要な課題であり、多くの人々がこの課題を解決したと思います。

私は説明します。 私は並列に呼び出す多くのユーザーサーバー要求を持っており、同じ要求のパフォーマンスメトリックを測定したいと思っています。例えば

10:00:00AM request 1 duration 200 ms: /some_request/data 
... 
11:00:00AM request 2 duration 700 ms: /some_request/data 
... 
11:30:00AM request 3 duration 300 ms: /some_request/data 
... 

あなたは一般的な問題は、要求の期間は常に飛び込んだ、と私たちは、要求性能の真の変化について言うことができないということである見ることができるように。同じリクエストの継続時間の差(注:同じjsonデータ1-1の場合)は予測できません。

の例では、私は対策をしようとは、そのような期間を要求します。

public class PerformanceFilter : IActionFilter 
{ 
    private Stopwatch timer = new Stopwatch(); 

    public void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     timer.Reset(); 
     timer.Start(); 
    } 

    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     timer.Stop(); 
     var duration = timer.ElapsedMilliseconds; 
    } 
} 

は、それは間違った方法だことができますか?あるいは、要求パフォーマンスの変化を検出するために、他の要求特性を使用できますか?

答えて

1

タイミングデータを収集する客観的な方法として、時間のかかるw3c HTTPログ値を考慮しましたか?これはサーバーで行われ、時刻コレクションの一部として送信の終了時に最後のackだけが失われます。

サンプルエージェントまたはサーバーが仮想マシンの内部にある場合は、時計の精度と整合性に影響するため、特に注意が必要です。仮想マシンクロックは、ハードウェアクロックから固定解除され、「浮動」します。このフロート期間では、クロックはわずかに遅く/劣化し、定期的にハードウェアクロックに対して再同期する必要があります。これは常に、仮想マシン上のイベントをタイミングするときに発生します。この結果、タイムドイベントで明らかなジャンプが発生します。

これはパフォーマンステストコミュニティでよく知られている問題で、バーチャルマシンがロードジェネレータとして使用されるパフォーマンステストでタイミング精度に関連するクロックフロートの問題を設計する必要があります。

+0

仮想マシンからこの "浮動小数点"ビヘイビアを削減または削除するにはどうすればよいですか?それとも「シンプル」ではないのですか? –

+0

フロートを管理することはできません。これはソフトウェア仮想化環境で行われるタイムスライスの自然な動作です。ハイパーバイザーは、同期するタイミングと頻度を決定します。パフォーマンステストでは、制御要素、特に物理ハードウェア上の少数のテストエージェントを実行する単一のマシンでフロートを管理します。物理的なハードウェア上のコントロールグループと仮想マシン上で実行されている残りのものとの動作の違いを調べることによって、スキューを見積もることができます。これを6シグマ製造品質管理サンプリングのように考えてください。 –

+0

「CPU使用率」など、いくつかのメトリックはどのくらいですか(継続時間ではありません)。 HTTPリクエストのパフォーマンスを測定できますか? –

1

パフォーマンスを測定するツールはありますか?はい、Fiddlerで試してみてください。あなたがウェブサイトに接続すると、すべてのリクエストと応答をトラッキングするようになります。そこからリクエストを選択して右クリック - >プロパティに移動し、そこにすべてのタイムスタンプ要求と応答のために。これが役に立ちますようにお願いします

+0

ツールそれは問題ではありませんが、私はそれが要求期間のジャンプを解決していないと確信しています。 –

関連する問題