测量服务器HttpRequest的性能

时间:2017-12-03 17:06:05

标签: asp.net asp.net-mvc performance httprequest performance-testing

如何衡量服务器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;
    }
}

可能是错误的方式?或者,为了检测请求性能变化,我们可以使用其他请求特性吗?

2 个答案:

答案 0 :(得分:1)

您可以使用任何工具来衡量效果吗?如果是,请尝试使用Fiddler ..当您连接到网站时,fiddler将开始跟踪所有请求和响应,然后从那里选择请求并右键单击 - >转到属性,在那里你可以看到请求和响应的所有时间戳。希望这有帮助

答案 1 :(得分:1)

您是否考虑过将w3c HTTP日志值作为收集时间数据的客观方法?这是在服务器上进行的,并且仅将发送结束时的最后一个ack作为时间集合的一部分。

您需要特别注意的一件事是,您的样本代理或服务器位于虚拟机内部,因为这会影响时钟精度和完整性。虚拟机时钟从硬件时钟和浮动中取消。"浮动。"在此浮动周期中,时钟会稍微减慢/降低,并且必须周期性地重新同步到硬件时钟。当您在虚拟机上对事件进行计时时,总会发生这种情况。这导致定时事件的明显跳跃。

这是性能测试社区中一个众所周知的问题,它必须设计与性能测试时序精度相关的时钟浮点问题,其中虚拟机用作负载生成器。

相关问题