2

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

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

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

注意:该页面包含 ajax。

问题:

  1. 与 Firebug 结果相比,AJAX 是我在响应时间方面出现巨大差异的原因吗?
  2. 我需要限制几个文件吗?我不会将它们添加到线程组吗?

谢谢。

4

3 回答 3

5

Jmeter 不渲染页面,也不做javascript,所以它也不做ajax。

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

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

Jmeter 会以串行方式而不是并行方式发出每个请求,因此这也可能会增加给定页面及其所有子样本的总加载时间。

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

对于问题二,我建议不要排除它们,因为您想要准确测量负载,并且排除文件会扭曲您的结果。

  • 较新的 Jmeter 版本确实具有“从 HTML 文件中检索所有嵌入式资源”的选项,您还可以将其设置为使用并发池来发出这些请求。
于 2012-04-25T15:04:59.740 回答
1

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

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

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

于 2012-05-05T22:08:13.327 回答
0

正如 Lee 所说,JMeter 串行(一个接一个)发出请求,而浏览器将并行请求资源,一次最多打开 8 个到每个主机的连接(因此在更复杂的情况下可能会发生超过 8 个并行事务页)。简而言之,JMeter 在测量总页面加载时间方面并不准确。因此,它适用于在网站上放置负载或仅测试页面内容本身,但不适用于测量真实的页面加载时间或模拟真实的加载模式。为此,您将需要一个更好的工具。

于 2012-04-25T16:51:57.360 回答