Jmeter -- 定时器 -- 同步定时器Synchronizing Timer(集合点)

网友投稿 1380 2022-11-19

Jmeter -- 定时器 -- 同步定时器Synchronizing Timer(集合点)

Jmeter -- 定时器 -- 同步定时器Synchronizing Timer(集合点)

作用:

模拟并发。

设置一个阈值(请求数量),当请求数达到这个阈值时,允许请求同时发出。例如:想测试一座桥的并发(忽略载重等其他因素,只考虑通过),那么并发的请求就是类似于多少辆车可同时通过桥,而车辆一般情况下是不可能同时通过桥的,因而我们可以在桥头A,设置一个集合点,等车辆数满足一定的数量,同时让车辆通过此桥。

步骤:

1. 添加同步定时器

Add --> Timer --> Synchronizing Timer

2. 配置同步定时器

a)Number of Simulated Users to Group by:请求集合数量(模拟用户组的数量设置,为到集合点释放的线程数);如果配置为0,则等于线程组中的线程数

b)Timeout in milliseconds:超时时间(超时多少时间后同时释放,单位毫秒)

线程组会等待线程数达到了设置的值才释放,如果:

超时时间为0,如果线程数不足集合点中设置的数,就会一直处于等待当中超时时间大于0,如果超过设置的最大等待时间后,还没达到模拟用户组中设置的值,线程组将不再等待,释放已到达的线程

场景:

1. 当线程数=集合数量时,集合好了就全部释放,不用等超时时间

3. 当线程数>集合数量时,集合好了就释放n(集合数量)个,然后再过10s再释放n个,直至结束(最后若不够集合数量,则等超时时间后全部释放)

例子1:

线程组设置:总线程数10,启动时间2s

同步定时器设置:集合数10,超时时间0ms(或任意几秒)

例子2:

线程组设置:线程数10,启动时间5s

同步定时器设置:集合数2,超时时间0ms(或任意几秒)

运行结果:线程组在5s内启动全部线程,因集合数为2,所以每间隔5/(10/2)=1s启动一波(2个线程)

例子3:

线程组设置:线程数10,启动时间5s

同步定时器设置:集合数4,超时时间4s

运行结果:线程组在5s内启动线程(不包括超时的),因为集合数为4,所以每间隔5/(10/4)=2s启动一波(4个线程),剩余最后2个线程,达不到集合数4,所以在超时4s后一起释放

例子4:

同步定时器设置:将例子3中的超时时间改为0,其他设置不变

运行结果:JMeter一直卡顿在如下页面(未设置超时时间,请求数不满足集合点设置的请求数时,会出现此情况)

解决方案是设置同步定时器的超时时间:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程启动加载时间)

ps:

超时时间不宜设置太短,因为假如集合数为200,还没准备好就超时释放了,起不到集合的作用

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Jmeter - 响应内容中文乱码问题
下一篇:SpringBoot结合Neo4j自定义cypherSql的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~