来自萤火虫的Jmeter变化的响应时间

时间:2012-04-25 06:15:04

标签: jmeter load-testing performance-testing

我正在努力寻求解决方案。

我做了什么:
我已经使用HTTP代理服务器记录了导航页面生成的每个文件。 添加线程组下的所有文件我运行了测试计划,一次没有缓存,一次没有缓存。

我得到的是什么:
但是我使用Firebug对该页面的响应时间比使用Jmeter [缓存和非缓存]的时间少30-40秒。

注意:该页面包含ajax。

问题:

  1. AJAX是我与Firebug结果相比,响应时间变化很大的原因吗?
  2. 我是否需要限制几个文件?我不会将它们添加到线程组?
  3. 感谢。

3 个答案:

答案 0 :(得分:5)

Jmeter不会渲染页面,也不会执行javascript,因此它也不会执行ajax。

但是,ajax会生成请求,如果您使用它,代理将捕获这些请求。

另一个关键区别是大多数浏览器会同时执行请求,通常一次发出4到6个请求,具体取决于浏览器和设置。

Jmeter将按顺序*而不是并行地生成每个请求,因此这也可能会增加给定页面及其所有子样本的总加载时间。

如果您查看每个请求的请求时间并将其添加,它应该非常接近

对于问题二,我建议不要排除它们,因为您想要准确衡量负载,排除文件会使结果产生偏差。

  • 较新的Jmeter版本可以选择“从HTML文件中检索所有嵌入的资源”,您也可以将其设置为使用并发池来发出这些请求。

答案 1 :(得分:1)

有时,负载测试和页面加载速度这两个概念会混淆不清。实际上它们完全不同,应该使用不同的工具以不同的方式进行处理。

记录加载页面所需时间的最佳工具是浏览器。如果将它与秒表和合适的样本量相结合,您将获得一些有用的数据。说真的,这是一个很好的方法,你不仅可以获得真实的结果,而且当页面被 percieved 加载时你也会停止计时,这才是最重要的。如果你想自动化这个过程以产生可重复性,或者你只想要更精细的颗粒,那么你应该看看功能自动化工具(如Seleneum)。但这是功能测试,而不是负载测试,如果你想进行负载测试,那么像JMeter这样的东西非常有效。

那就是说,我怀疑如果你看到JMeter的响应时间大40秒那么可能是因为你正在使用多个线程运行负载测试?可能是你的服务器超载,这就是响应时间更长的原因。

答案 2 :(得分:0)

正如Lee所说,JMeter连续地(一个接一个地)发出请求,而浏览器将并行请求资源,每次向EACH主机开放多达8个连接(因此可能会发生超过8个并行事务在更复杂的页面上)。简而言之,JMeter在测量总页面加载时间方面并不准确。因此,它可以将负载放在站点上或仅用于测试页面内容,但不能用于测量实际的页面加载时间或模拟实际的加载模式。为此,你需要一个更好的工具。