【问题标题】:Measure server HttpRequest's performance测量服务器 HttpRequest 的性能
【发布时间】:2017-12-03 17:06:04
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您是否考虑过将 w3c HTTP 日志值 time-take 作为收集计时数据的客观方法?这是在服务器上获取的,并且作为时间收集的一部分,仅错过发送完成时的最后一个 ack。

    您需要特别注意的一件事是,当您的示例代理或服务器位于虚拟机内部时,这会影响时钟精度和完整性。虚拟机时钟与硬件时钟解除固定并“浮动”。在此浮动期间,时钟会稍微变慢/降级,并且必须定期重新同步到硬件时钟。当您在虚拟机上为事件计时时,这总是会发生。这会导致定时事件出现明显的跳跃。

    这是性能测试社区中的一个众所周知的问题,在使用虚拟机作为负载生成器的性能测试中,必须围绕与计时精度相关的时钟浮动问题进行设计。

    【讨论】:

    • 很好的解释,但是如何减少或消除虚拟机中的这种“浮动”行为?还是不“简单”?
    • 您无法管理浮动。这是在软件虚拟化环境中进行的时间切片的自然行为。管理程序决定何时同步以及同步频率。在性能测试中,我们使用控制元素管理浮动,特别是在物理硬件上运行少量测试代理的单台机器。我们可以通过查看物理硬件上的控制组与虚拟机上运行的其余部分的行为差异来估计偏差。把这想象成六西格玛制造质量控制抽样
    • 其他一些指标(不是持续时间)怎么样,例如“cpu 使用率”。我们可以用它来衡量 http 请求的性能吗?
    • 您的 VM 是否自动缩放。您只能报告管理程序告诉您的内容。通过命令行工具和 SNMP 管理工具可以从虚拟机管理程序中获得真相,但您只能在私有云模型中拥有这一点,而不是在公共云模型中。
    • 嗯,好的。明白了。但是如果我将我的性能过期移动到物理机(不是虚拟机)?请求持续时间的改善情况?
    【解决方案2】:

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

    【讨论】:

    • 工具没问题,但我确定它没有解决请求持续时间的跳跃。
    猜你喜欢
    • 2015-01-29
    • 2010-09-14
    • 2012-01-26
    • 1970-01-01
    • 2011-01-07
    • 2016-09-07
    • 2015-05-12
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多