性能测试工具 关于 jmeter 压测时出现报错,导致吞吐量变大的疑问

busgade · 2022年03月21日 · 最后由 啊神 回复于 2022年04月07日 · 3914 次阅读

最近在做 jmete 压测时,发现个问题
测试一个单纯的查询接口,执行 10 万请求,线程为 50,

可以看到吞吐量有 1050 每秒,这个应该是取的平均吞吐量

再看下并发图形趋势图

发现每秒的事务数是 100 多,接近 200.
这个和吞吐量的结果明显查了很多,我把测试结果保存到 csv 中,通过手动计算得到的吞吐量也只有 100 多,和图形趋势图一致。
经多次测试发现,当请求出现第一个 error 时,吞吐量数值就会不停的增大,此时的吞吐量不正确的,所以此时不管是用汇总报告还是聚合报告作为测试报告,
吞吐量都是错误的,没有意义的,跟趋势图并发数不一致,这点领导很快就发现了。
有些人说每秒事务数和吞吐量不一样,但是我这里只有个一个压测接口,理论上来说此时一个压测接口的吞吐量和每秒事务是一样的。
这是 jmeter 的 bug 还是什么原因,有大佬遇到过这种情况吗

共收到 5 条回复 时间 点赞

每秒事务数和吞吐量 就是一样的不用纠结
导致概要结果中的结果这么大,是因为 error 后,响应时间变短几乎瞬间返回造成的,JMeter 默认认为一个请求和一个响应是一个取样结果。
你把 TPS 图表中的失败的绿线隐藏了,你打开就能看到,绿线得有 900 多吧,只看成功的红线 100 多,概要结果中是成功 + 错误的统计,也就是说他记录的是所有请求。

另外,建议压力调低一点,直到被压的服务不出现 error,记录下它的吞吐量,作为正常服务的容量上限。

我感觉跟 error 关系不大,因为错误率才 0.04%,并且 TPS 图中并没隐藏 fail 绿线,只是数量太少显示不明显。

从聚合报告的 TPS、平均响应时间、sample 数量来算,你这次压测顶多执行 1 分多钟,但 TPS 图却显示 12 分钟,我很怀疑上下两张图不是同一次压测产出。

huangshengnan 回复

大哥,这是同一次压测的图啊,确实是压了 12 分钟,我就说这个聚合报告和 tps 图对不上所以才会疑惑

果冻 回复

感谢大佬的建议,我去验证一下

你是用 GUI 模式进行并发监控的吗,有没可能是 GUI 模式在大并发的情况下会出现描绘聚合和汇总图时候出现的异常。可以采用非 GUI 模式进行压测,压出报错后再把结果验证一下,聚合图和 TPS 图是否能对得上

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册