Jmeter - 并发测试 -Synchronizing Timer集合点并发
作者:互联网
一、前言
在工作中,有时需要模拟用户高并发场景,可以借助jmeter的集合点模拟测试
二、场景
Jmeter线程启动了就会直接发送测试请求,如果要模拟在一瞬间高并发量测试的时候,需要调高线程数量,这很耗测试机器的性能,往往无法支持较大的并发数,无法控制每次测试的瞬间并发量。那么,该如何解决上述问题呢?
三、解决方案
使用集合点,阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力。
1、集合点作用域
- Synchronizing Timer是在每个sampler(采样器)之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前,都会执行同步定时器
- 作用域:当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行;
- 如果希望定时器仅应用于其中一个sampler,则把该定时器作为子节点加入
四、实例演练
1、添加集合点,在Jmeter里是synchronized timer
1)Number of Simulated Users to Group by
- 每集合够多少个模拟用户(线程)后发送一次测试请求;
- 如果设置为0,等同于设置为线程租中的线程数;
- 确保设置的值不大于它所在线程组包含的用户数(线程数)-- 一直集结线程而不发出测试请求,直到超时(如果设置了的话)。
例子说明:“Number of Simulated Users to Group by: 5”表示并发量是5。也就是说,Jmeter会等到5个线程都运行到此处时,这五个线程才开始执行后面的操作,先到达的线程将会在此等候。
2)Timeout in milliseconds
- 超时时间,即多少毫秒后同时释放已集结的的线程,发送测试请求;
- 如果设置为0,Timer将等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。
2、设置线程组属性
因为现在是使用集合点来实现高并发测试,所以现在线程组属性中就可以设置线程在较长的时间来启动,这样测试机器的压力就会相对小一点;
3、添加相关请求,结果树等,运行查看效果
通过结果树可以看到,请求是批量执行的;1)开始执行的脚本,观察请求的增加数量趋势;
2)对比请求的发送时间; 注:也可以添加聚合报告、表格察看结果、Hits per Second、Transactions per Second等来监控执行结果。
五、聚合报告参数详解
- Label:就是请求名称
- #Samples:总线程数,值 = 线程数 * 循环次数
- Average:单个请求的平均响应时间,值 = 总运行时间 / 发送到服务器的总请求数,截图中的值是这么计算出来的
- Median、90%line、95%line、99%line分别代表50%的用户响应时间、90%的用户响应时间、95%的用户响应时间、99%的用户响应时间,也就是有百分之多少的请求小于这个值。其中,90%line是性能测试中比较重要的一个衡量指标。
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率,发生错误的请求 / 总请求数,上面示例中错误率为0,再看下面这个示例 login的错误率 = 32 / 500 =0.064
- Throughput:吞吐量,表示每秒完成的请求数
- KB/sec:以每秒发送的千字节为单位测量的吞吐量
标签:设置,请求,Timer,并发,线程,测试,集合点 来源: https://www.cnblogs.com/Chilam007/p/14998354.html