第六篇 Jmeter 集合点与同步并发的策略问题

一. 什么是集合点?

“性能测试”一般思路是“多用户并发测试”,但真正的并发其实是不存在的,为了更真实、更接近的实现并发,在需要压力的地方设置集合点,等所有用户都到位的时候,然后一起访问,从而实现并发。

举个例子,要测试100个用户同时登录,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等待,等100个用户都输入完毕,相当于集结在一起了 ,然后再一起访问。

集合点:其目的就是让所有请求在不满足条件的时候处于等待状态,等待满足条件后,再同时一起发起请求。

集合点本质或者作用就是同步并发。

常见应用场景:秒杀

二、添加集合点

路径:右键点击 线程组---->定时器---->Synchronizing Timer(同步定时器)

集合点放置的位置:一定要放在被测接口的前面。比如要测登录,那集合点一定是要放在登录的前面才行

第六篇 Jmeter 集合点与同步并发的策略问题

第六篇 Jmeter 集合点与同步并发的策略问题

Number  of Simulated Users to Group by:按组分组的模拟用户数,通俗的讲就是要发起同步并发需要达到多少用户数

Timeout in milliseconds:Timout的意思是等待请求多久后,不管线程数有没有到达设置的并发数量都开始运行测试。

场景一:线程数设置为4,集合点为2,超时为0,点击运行。

                 结果:可以看到有4个结果,此处分成了2组进行并发,每次是2个用户。

第六篇 Jmeter 集合点与同步并发的策略问题

场景二:线程数设置4,集合点设置为5,超时为0,点击运行。

                结果:发现没有执行请求,需要手动stop。原因:不够并发数且超时为0

第六篇 Jmeter 集合点与同步并发的策略问题

场景三:线程数设置4,集合点设置为3,超时为0,点击运行。

                结果:发现只有3个请求,一直都没有停止,需要手动stop。原因:第一组够集合点,一起并发,第二组只有1个,不够集合点,所以一直是等待状态。

第六篇 Jmeter 集合点与同步并发的策略问题

场景四:线程数设置4,集合点设置为4,超时为0,点击运行。

               结果:可以看到有4个请求。分1组执行。

第六篇 Jmeter 集合点与同步并发的策略问题

场景五:线程数设置4,集合点设置为3,超时为3000,点击运行。

              结果:分2组,发现先有3个请求,为第一组,5秒后,出现后1个请求,为第二组,共4个。

第六篇 Jmeter 集合点与同步并发的策略问题

总结:

集合点最关键的就是策略问题,涉及到两个方面:

1. 同步并发时机问题:即什么时候同步并发?

2.超时问题:比如目的是达到100个用户时,才向服务器发请求,而这个过程中存在一个超时问题,可能是从第50个并发到第100个并发之间超时了,超时怎么处理?

策略解决方案:

1. Timeout in milliseconds: 默认为0,或者设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。也就是说,如果线程数不足集合点中设置的数,就会一直等待而不执行请求,需要手动stop。

2.Timeout in milliseconds: 如果设置大于0,那么当超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。

3. 同步定时器是在每一个采集器之前执行的,不管定时器的位置是在采集器之前还是之后,都是在采集器之前执行。

4. 如果一个线程中存在多个采集器,同步定时器和这些采集器在同一级(同一节点下),则同时作用于这些采集器。

5. 如果需要一个定时器单独对应某一个采集器,可以在采集器的子节点中创建定时器。

部分内容转自:https://blog.csdn.net/qq_36350532/article/details/80622349,感谢作者分享