Jmeter集合点(线程组和同步定时器)

性能测试最常见的场景就是,在同一时间N个用户同时操作。之前简单的认为线程组数在0s内同时启动,不就实现了并发么。线程组中并发数、启动时间、循环次数、持续时间和定时器又有什么关联呢?

同步定时器Synchronizing Timer配置如图,主要有2个参数:
第一个参数,我自己翻译为每次集合的用户数,当线程组数达到这个数量时,触发一次并发。
第二个参数,超时时间,当数量没有达到集合用户数时,若超过了这个时间,也会触发并发。

 

 下面通过具体的例子来讲解:

配置一:线程组数10,启动时间为0秒,无同步定时器
效果:按下start按钮后,所有线程组的HTTP请求几乎同时启动运行

 

 

配置二:线程组数10,启动时间为10秒,无同步定时器
效果:按下start按钮后,每1秒启动一个线程组,10秒完成所有10个线程组启动

 

配置三:线程组数10,启动时间为10秒,同步定时器中每次集合用户数10
效果:按下start按钮后,仍然是按照配置10秒内启动所有线程组,即每1秒启动一个线程组,但是HTTP请求并没有在线程组启动后立即发送,那是因为有同步定时器设置了10个为一个集合,所以会等待10秒钟,线程组个数凑够了10个之后,所有线程组的HTTP请求再同时发送

 

配置四:线程组数10,启动时间为10秒,同步定时器中每次集合用户数5
效果:按下start按钮后,每1秒钟启动一个线程组,但HTTP请求并没有立即发送,而是5秒钟后,当集合到了5个线程组后,5个HTTP请求一起发送,再过5秒钟后,剩余5个线程组的HTTP请求一起发送

 

其他配置

配置五:线程组数10,启动时间为10秒,同步定时器中每次集合用户数3,超时时间为0
这种配置…运行起来的效果…:按下start按钮,3秒后有3个线程组HTTP请求发送,6秒后有另3个线程组HTTP请求发送,9秒后又有3个线程组HTTP请求发送,然后就没有然后了,最后一个线程组的HTTP请求不会发送了,因为永远达不到集合数3。

配置六:线程组数10,启动时间为10秒,同步定时器中每次集合用户数3,超时时间为5000ms
开始时候的效果与上面配置类似,按下start按钮,3秒后有3个线程组HTTP请求发送,6秒后有另3个线程组HTTP请求发送,9秒后又有3个线程组HTTP请求发送。此时由于只剩一个线程,所以定然不会达到集合数量,但是设置了5秒超时,所以5秒钟后,最后一个线程组启动运行

 

思考

最后的疑问是,使用
配置1(线程组数10,启动时间为0秒,无同步定时器)
配置3(线程组数10,启动时间为10秒,同步定时器中每次集合用户数10)
都能实现同一时间多用户并发。区别在哪儿呢?
1、配置3中这些线程是慢慢启动的,然后同一个时间并发访问。而配置1中的所有线程同时启动且并发访问。当并发用户数很大很大时,配置1会使得压力服务器瞬间压力太大,可能会影响并发效果。
2、loadrunner中管这种并发叫集合点。所谓集合,感觉更像是军训时候,教官突然吹了一个哨子,说5分钟后在楼下紧急集合。此时大家会各自开始准备,有的人很快就跑到楼下了,有的人穿衣服比较慢,或者跑的太慢,最后一秒钟才到楼下,总而言之,5分钟后大家集合完毕,准备统一行动。说着说着,是不是感觉同步计时器Synchronizing Timer才像是真正的集合呢?嘿嘿,大概是吧

posted @ 2020-08-13 11:18  Z张不错  阅读(2026)  评论(0编辑  收藏  举报