没有延迟测量到增加的请求数

No latency measured increasing request number

我在 Ubuntu 虚拟机上使用 Apache 服务器,在物理 Ubuntu 机器上使用 运行 JMeter,在本地网络中执行容量测试。

增加请求率我可以很容易地观察到最大吞吐量并描述它如何从给定的请求率开始饱和,我发现平均时间没有增加。如果我尝试访问一个非常大的页面(3 MB 文本 + 10 MB 图像 + 50 MB 视频),我什至可以在一分钟内尝试数百个样本,但与使用更少的平均响应时间相比,我发现延迟没有增加要求。我开始认为本地网络是问题所在。

如何设置实验以观察响应时间的增加?

即使访问非常繁重的页面,您也看不到平均时间增加的原因是 JMeter 默认情况下不会尝试下载所有图像,

您可以在 HTTP Request 高级选项卡中更改默认行为,检查选项 Retrieve All Embedded Resources

Retrieve All Embedded Resources from HTML Files Tell JMeter to parse the HTML file and send HTTP/HTTPS requests for all images, Java applets, JavaScript files, CSSs, etc. referenced in the file.

这样 JMeter 将为您的 HTML 下载所有相关文件。

您可以调整并检查 Parallel downloads 是否会变得太慢。

正如 user7294900 所回答的那样,检索所有嵌入式资源确实会增加响应时间。您可以按特定域 via regex 排除嵌入式资源,例如 ^((?!domain1|domain 2).)*$ 这样您的测试就不会影响任何第三方服务。

以下是您可以尝试的其他一些方法:

  1. 禁用缓存。这是通过 HTTP 缓存管理器配置完成的。有关详细信息,请查看 this article。如果使用缓存,将会有状态码为 304 - 未修改的 HTTP 请求,执行速度非常快。
  2. 调查 HTTP 响应。断言元素在实际负载测试中应尽可能少,但为了调查问题,请尝试添加一些并 运行 在您的计算机上本地以 GUI 模式对少数用户进行测试。我相信 this article 会对你有所帮助。
  3. 您可能达到了内部网络限制。防火墙可能会阻止您的请求。您可以与您的网络管理员讨论您的结果。

Latency dependency on response size is not that close, basically latencyis TTFB (Time To First Byte)

还有 well-behaved Web 应用程序 return "heavy" 来自静态缓存资源(甚至 CDNs)的内容,所以它应该不是一个昂贵的操作。