JMeter汇总报告出现故障

时间:2016-07-04 11:56:33

标签: testing jmeter

有没有人遇到错误的报告?我按照教程http://jmeter.apache.org/usermanual/build-web-test-plan.html设置了一个Web测试计划,除了我添加了一个CSV数据集配置来从文件中读取请求参数。测试过程没有任何警告就完成了,但是aggerate报告中的数据很奇怪。

它给出了这样的东西: jmeter result

但是根据文件http://jmeter.apache.org/usermanual/component_reference.html#Aggregate_Report

Throughput = (number of requests) / (total time in secs)
           = 1000 * (number of requests) / (total time in millionsec)
Average = (total time in millionsec) / (number of requests)

这意味着Average * Throughput几乎应该是1000

我的报告出了什么问题?

ps:上面的公式来自http://jmeter.apache.org/usermanual/glossary.html#Throughput

1 个答案:

答案 0 :(得分:1)

从头开始:如果你运行1个线程,1次迭代,并且该采样器在1001 ms内完成,你的吞吐量将是1000 ms / 1001 ms = 1 / sec。

现在说你再添加一个线程,它们都立即启动(仍然运行1次迭代)。说,平均值保持不变。因此吞吐量将是2 *(1000 ms / 1001 ms)= 2 / sec(换句话说:2个采样器在1秒内完成)

现在让我们添加迭代:2个线程,2次迭代,相同的平均值:第一秒吞吐量将与之前的2 /秒相同,第二秒吞吐量将与之前的2 /秒相同,所以仍然平均约2 /秒

但现在让我们添加一个加速时间1秒:第一个线程立即启动,而第二个线程在500毫秒后启动;相同的平均值所以在第一秒时吞吐量将是1 / sec(第二个线程还没有完成第一次迭代,因为它开始以后);第二秒吞吐量将是2 /秒(第一个线程的第二次迭代,第二次的第一次迭代);在第3秒,线程1完成,但第二次仍然在第二次迭代的中间,因此吞吐量将是1 /秒。因此平均吞吐量=(1 / sec + 2 / sec + 1 / sec)/ 3秒。 = 4/3秒= 1.3 /秒

等等 - 直到你达到饱和点之前一直很无聊。在饱和点之前,您给服务器的数量越多,吞吐量越大/越大。在饱和点之后,即使服务器有更多工作,它也无法提高吞吐量。

例如说我当时只能向我的服务器发送1个请求。因此,即使我有2个线程,上述示例中的吞吐量也是1 /秒。

因此,您的屏幕截图显示了4000个样本平均229毫秒和56.8 /秒吞吐量。如果您有1个用户按顺序运行4000次迭代,那么您的吞吐量为1000/229 ms = 4.4 /秒,因此您拥有的用户数超过1个; 56.8 /秒吞吐量实际上意味着大约16个用户。究竟有多少我无法分辨,因为我不知道你的加速时间以及你是在饱和点之前还是之后。例如,您可能有100个并发用户,但实际上只有大约16个同时连接建立到服务器(过去饱和点),或者您可能已经慢慢上升,这意味着当用户#17启动时,用户#1已经完成。因此,即使服务器可以处理更多,它也永远不会有机会。

哦,它也可能少于16个并发用户:我从平均吞吐量来判断,这在大多数情况下都是一个很好的指标,但并非总是如此:它可能会受到某个时期特别高或低吞吐量的影响时间例如,首先吞吐量为1 /秒,然后当服务器增加时,它变为100 /秒。平均值是50 /秒,但最后一个数字--50 /秒是没有意义的。看看价值随时间的变化会更有价值。

希望这个解释有所帮助。