【性能测试】JMeter:集合点,同步定时器的应用实例!

一、集合点的定义

在性能测试过程中,为了真实模拟多个用户同时进行操作以度量服务器的处理能力,可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求。

通过插入集合点可以较真实模拟多个用户并发操作。

(注意:虽然通过加入集合点可以约束请求同时发送,但不能确保请求同时到达服务器,所以只能说是较真实模拟并发)

在JMeter中可以通过同步定时器来设置集合点。

二、同步定时器

Synchronizing Timer的目的是阻塞线程,直到X个线程被阻塞,然后它们全部被释放。因此,Synchronizing Timer可以在测试计划的各个点创建大的即时负载。

▲ 配置项

Number of Simultaneous Users to Group by:

设置一次性释放的线程数(默认为0)。通俗的理解就是并发用户数。

若设置为0,表示一次性释放的线程组下所有的线程。也就是并发用户数等于线程组下设置的线程数。

Timeout in milliseconds:

设置超时时间(单位毫秒ms,默认为0)。

若设置为0,定时器需要无条件等待设置线程数个数的线程全部到达才释放。比如设置线程数为100,则定时器无条件等待直到有100个线程达到才释放。

若设置的值大于0,则定时器以设置的超时时间作为等待释放的条件。

若相邻两个线程到达同步定时器的时间间隔大于超时时间,即使设置的线程数的线程未全部到达,定时器也会停止等待而释放到达的线程。

比如设置线程数为100,超时时间为2000ms,

**工作原理为:**从定时器工作开始计时,时间从0开始,在超时时间内第1个线程达到,则计时器重置为0;等待第2个线程,在超时时间内第2个线程到达,计时器重置为0;等待第3个线程...

只要相邻两个线程组之间的等待时间间隔没有超过2000ms的超时时间,则会等待全部100个线程达到才释放。

否则会停止等待立即释放,比如,在等待第24个线程到达定时器时,计时器时间超过2000ms了,则定时器停止等待,立即释放到达的23个线程。

▲ 注意事项

在使用同步定时器时,请注意如下事项:

  • 1.超时时间设置合理性

Timeout > 1000*(Number of Simulated Users to Group by)*(Ramp-Up Period)/(Number of Threads)
其中,Timeout为超时时间(单位ms),
Number of Simulated Users to Group by为一次性释放线程数(并发数)
Ramp-Up Period为线程组下所有线程的加载时间
Number of Threads为线程组下所有线程数
比如在线程组中设置10秒内要加载完200个线程,并在同步定时器中设置并发数为100,则超时时间设置须满足如下条件:
Timeout > 1000*100*10/200 ms = 5000 ms

  • 2.同步定时器仅对同一JVM中的线程有效,因此在分布式测试中不要使用,因为当JMeter分布式部署执行性能测试时,测试计划分发到不同的Slave上执行,为了确定是否满足线程释放条件,各台Slave上的JVM需要相互通信才能确定,实现困难且即使实现了也难免存在延时,这样就不能保证真实的并发。所以目前JMeter的做法是仅支持单个JVM。

三、应用案例

这里以ECshop前台系统登录并发为例。

假设默认50个用户并发登录。

添加同步定时器,将释放线程数设置为50,超时时间设置为1000ms。

如下图所示:

今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下

相关推荐
文人sec2 小时前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
学生信的大叔3 小时前
【Python自动化】Ubuntu24.04配置Selenium并测试
python·selenium·自动化
CesareCheung1 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流2 天前
jmeter使用技巧
jmeter
春时似衿里2 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书2 天前
JMeter的安装部署
jmeter
程序员杰哥2 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
C2 天前
商城购物系统自动化测试报告
python·功能测试·selenium
乐神嘎嘎嘎2 天前
Jmeter测试
jmeter
卓码软件测评2 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化