我有一个MVC Web aPI,我在比较这个API的响应时间时遇到了麻烦。我添加了一些代码来计算响应时间:
在AuthorizationFilterAttribute OnAuthorization中,我有以下代码:
actionContext.Request.Headers.Add("RequestStartTime", DateTime.Now.ToString());
我有一个ActionFilterAttribute和一个OnActionExecuted,其中我有以下代码:
string strRequestStartTime = actionExecutedContext.Request.Headers.GetValues("RequestStartTime").First();
DateTime dtstartTime = DateTime.Parse(strRequestStartTime);
TimeSpan tsTimeTaken = DateTime.Now.Subtract(dtstartTime);
actionExecutedContext.Response.Headers.Add("RequestProcessingTime", tsTimeTaken.TotalMilliseconds + "ms");
响应的标题为“RequestProcessingTime”,单位为毫秒。问题是每当我使用Postman / JMeter尝试相同的请求时,我发现响应时间比我在Response中看到的要小。为什么会这样?
答案 0 :(得分:0)
我认为这是因为标头没有考虑到达服务器的请求和返回的响应的时间,我的期望是它只显示在服务器端处理请求所需的时间。因此,JMeter从发送请求的时间和接收到最后一个字节的时间开始报告时间增量,这在真实用户体验方面更为正确。
参见" Elapsed Time"的定义,"连接时间"和"延迟"在JMeter Glossary。您可能还对How to Analyze the Results of a Load Test文章感兴趣,该文章演示了网络容量对整体效果的影响