jmeter如何实现多用户的同时并发请求--同步定时器

在实际中,我们经常会并发请求服务器,比如抽奖的时候,会同时抽奖,为了保证请求是一个时间发起的,这里我们需要使用到Synchronizing Timer

我们知道,在添加线程组的时候,我们会设置时间,比如5s完成10个线程的请求,那么这10个线程请求的时间是不一样的,我们只是单纯的完成了5s内请求了10次,并不能保证每次的请求时间一样,看一下截图

 可以看到,这里每2个请求发起的时间是一样的,因为5s内启动10个线程,那1s就是2个线程,所以每2个线程的请求时间是一样的。

那么如果我想要5个线程同时发起呢,这个时候需要就需要添加集合点!!!---Synchronizing Timer

右键--》线程组--》定时器--》Synchronizing Timer,这里我们设置为5

解释:

Number of simulated users to group by:表示集合点,就是达到这个数量后,同时发,就比如说要测一个桥的并发量,比如达到10辆车的时候,开启阈值,把开关打开,让车经过

Timeout in milliseconds:超时时间,就是等待这些车到达的时间,等他们集合的时间,如果设置0,就是没有超时时间,到了就走,如果设置了,比如10s,那么10s还没到齐,就不等了,就走。

这就像学校运动会跑步一样,10个一起跑,这个10就是一个集合点,等待他们的时间就是超时时间

超时时间的设置方法,可参考     超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

请求执行后,查看结果树,为了避免区分这里我将注册这个请求改成注册2

 可以看到 前5个的请求时间是Sample Start: 2019-12-05 17:07:26 CST  后五个的请求时间是Sample Start: 2019-12-05 17:07:29 CST

经过试验发现,其实就是把10个线程分成了2组,每5个一个时间发送。

现在,换个思路,比如我要6个一起发呢,也就是说 总共发10个线程,每6个线程一起发送,这个时候不够分,10个分成6个一份,还有4个对不对,

结果得知,线程数量不够的情况下,会停止在这儿。。。

 综上可知Synchronizing Timer是一个很好的运用,可以真正实现多少个线程并发。

三、如果想实现多个请求同时并发呢,比如我想要执行请求1 后 执行请求2,并且这两个请求同时并发

经过试验,是不可行的,该同步定时器只针对单个请求来同时并发

这两个请求的请求时间还是不能在同一时刻。

 四、同步定时器怎么放?

如果是放在线程组下面,那么是针对所有的请求都生效

 如上,该定时器针对集客的这两个sample都生效

如果同步定时器是放在某个请求下面,那么是私有的,只针对这个请求有效

 如上,这个时候 该定时器只对集客**有效

每天进步一点点 分享快乐
原文地址:https://www.cnblogs.com/zhangyqn/p/11990566.html