性能测试工具 jmeter 问题请教

KillerJiang · 2021年05月17日 · 最后由 KillerJiang 回复于 2021年05月17日 · 2727 次阅读

请教大家一个 jmeter 的线程组设定问题:
最近在做压测的时候,遇到一点疑惑,设置了 20/s 的并发,持续打压 300s,具体的线程组配置如下图:

该线程组执行完成后,个人理解的应该最多产生了 20*300=6000 个线程,但是在聚合报告里,最终产生了 15072 个线程数量,结果如下图:

请问是我理解有误吗?

共收到 9 条回复 时间 点赞

你理解错了;
这个 15072 是这 300 秒的请求总数;之所以产生两个 15072 是因为聚合报告会汇总请求总数,
所以一个 是分结果,一个是总结果;
如果想确定一共是不是产生了 20 个线程,就在 http 请求中加一个: ${__threadNum} (应该是这个参数,如果不是你再网上查查去)

举例:设置 1 个线程,永久循环跑 300s ,不代表你这个线程 1 秒就跑一次, 而是根据你服务器的能力,如果它 1 秒可以处理 10 个请求,那么总请求数就是 1*10*300 等于 3000

如果要控制样本量,需要设置吞吐量控制器

bug 回复

应该是你说的这样子 那这样下来 实际的压力岂不是跟设定的不一致吗?

KillerJiang 回复

不一致是肯定的啊,服务器是有处理时间的,不可能你发 100w 个请求,他就能返回 100w 个结果,超过一定程度,服务端很可能就不处理了或者进入排队队列了

KillerJiang 回复

可以一样,也可以不一样,如果想一样就用 3 楼说的加上吞吐量控制器,但实际需要什么样的并发,看你实际需求了,按照正常来说模拟实际情况,谁也不能保证一秒钟就有 100 个用户请求进来,可能有多可能有少。另外你需要的是压测结果来验证你们的服务器是否满足需求。不用太在这里纠结,会陷入误区。

好的 谢谢各位大佬解惑!😀

Ramp-up Period 表示的是启动所有线程组的时间,你的配置中只是表示 1 秒内启动你需要的 20 个线程组
线程组启动后怎么运行,在没有控制器影响的情况下,都是由接口响应速度决定的

就比如你招聘了 20 个搬砖的 ,并且要求他们全部在 1 秒内进入搬砖状态
但是每个人搬砖效率不一样,有的人 0.1 秒搬 1 块,有的 1 秒搬 1 块
15072 就是最终 300S 中所有人搬砖的数量

Tester_谜城 回复

比喻很形象了 谢谢哈

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