测量服务器 HttpRequest 的性能
Measure server HttpRequest's performance
如何衡量服务器 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;
}
}
可能是方法不对?或者我们可以使用其他请求特征来检测请求性能变化?
您可以使用任何工具来衡量性能吗?如果是,请尝试使用 Fiddler ..当您连接到网站时,fiddler 将开始跟踪所有请求和响应,然后从那里您 select 一个请求并右键单击 - > 转到属性,在那里您可以看到请求和响应的所有时间戳。希望这有帮助
您是否考虑将 w3c HTTP 日志值 time-taken 作为 objective 收集计时数据的方法?这是在服务器上获取的,作为时间收集的一部分,只错过了发送结束时的最后一个确认。
您需要特别注意的一件事是当您的示例代理或服务器位于虚拟机内部时,因为这会影响时钟精度和完整性。虚拟机时钟与硬件时钟解除固定,"floats." 在这个浮动周期内,时钟会稍微 slow/degrade 并且必须定期重新同步到硬件时钟。当您在虚拟机上为事件计时时,这总是会发生。这导致定时事件明显跳跃。
这是性能测试社区中的一个众所周知的问题,在使用虚拟机作为负载生成器的情况下,性能测试必须围绕与计时精度相关的时钟浮动问题进行设计。
如何衡量服务器 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;
}
}
可能是方法不对?或者我们可以使用其他请求特征来检测请求性能变化?
您可以使用任何工具来衡量性能吗?如果是,请尝试使用 Fiddler ..当您连接到网站时,fiddler 将开始跟踪所有请求和响应,然后从那里您 select 一个请求并右键单击 - > 转到属性,在那里您可以看到请求和响应的所有时间戳。希望这有帮助
您是否考虑将 w3c HTTP 日志值 time-taken 作为 objective 收集计时数据的方法?这是在服务器上获取的,作为时间收集的一部分,只错过了发送结束时的最后一个确认。
您需要特别注意的一件事是当您的示例代理或服务器位于虚拟机内部时,因为这会影响时钟精度和完整性。虚拟机时钟与硬件时钟解除固定,"floats." 在这个浮动周期内,时钟会稍微 slow/degrade 并且必须定期重新同步到硬件时钟。当您在虚拟机上为事件计时时,这总是会发生。这导致定时事件明显跳跃。
这是性能测试社区中的一个众所周知的问题,在使用虚拟机作为负载生成器的情况下,性能测试必须围绕与计时精度相关的时钟浮动问题进行设计。