目录
-
功能作用:
- 定时器主要作用于线程延迟,用来达到业务上更真实的场景模拟
-
底层采用Thread.sleep(毫秒数)来实现
-
执行顺序:
- ①、配置元件优先执行
-
②、按深度优先算法,依次寻找取样器,找到取样器后,逐个执行,遵循下面的第③条规则
-
③、组件执行的顺序:前置处理器 ---> 定时器 ---> 取样器 ---> 后置处理器 ---> 断言 ---> 监听器
-
④、同一个取样器有多个定时器组合时,在范围内按照广度优先策略依次执行
-
⑤、定时器无子元素
1、集合点概念【Timer】
-
集合点
- 集合点是LoadRunner里面的概念
-
性能测试中需要模拟大量用户并发
-
集合点可以让虚拟用户在同一时刻发送请求
-
在JMeter中,集合点通过定时器完成
-
JMeter中,定时器控制取样器的执行时机
- 根据实际需求,有许多的定时器可以选择
-
如固定定时器,随机定时器等
-
定时器
- 为了真实模拟用户场景负载
-
可能还需要模拟在什么时候以什么规律发送请求
-
定时器还用来设置延迟与同步
- 定时器的优先级高于取样器
-
在同一作用域下如果有多个定时器存在,那么每一个定时器都会被执行。
-
如果想让某一定时器仅对某一个sampler有效,可以将定时器加到此节点下(子节点呗)
2、固定定时器【Constant Timer】
-
固定值的定时器,用来模拟思考时间
- 思考时间也是起源于LoadRunner里面的专业术语
-
固定定时器的特点:
- 可以让每个线程在请求之前按照相同的指定时间进行停顿
-
固定定时器的延时不会计入单个sampler的响应时间
- 为啥,你想,我等那么久才去执行我的sampler,我执行请求的时候,跟我之前的时间有半毛钱关系吗?是不!
-
但是固定定时器的延时会计入事务控制器的时间
- 因为它和请求放到一起的,同一个作用域,都在事务控制器之下呗
-
- 可以让每个线程在请求之前按照相同的指定时间进行停顿
3、同步定时器【Synchronizing Timer】
-
在性能测试中需要模拟多用户并发的场景
- 同步定时器可以实现此需求。
-
集合点
-
原理:
- 通过这个定时器,在某一点阻塞线程,直到那么多个线程被阻塞,然后同时释放
-
Synchronizing Timer可以在测试计划的某个需要的时刻创建较大的即时负载
-
它就是拿来模拟所有的操作都在同一时间运行的
- 如果不搞这个处理,你想,有的都跑完了,后面的线程有的才陆陆续续的开始,这样的话就达不到负载的目的
-
参数:
- 1)模拟用户组的数量
- 这个就是要模拟的并发数
-
或者说要模拟的多少个用户
-
2)超时时间
- 这个必须要设置,否则,如果最后一次,达不到这个并发量的话,那么脚本就会停在那里,永远卡住了,不执行【因为永远达不到那个并发,达不到就不运行】
-
比如设置线程数为100,同步定时器,模拟并发30,那么最后一次,就运行不了了,因为还剩10个线程数,永远达不到30
-
同时,超时时间不要设置太短,尽量设置大点,否则,会影响集合点本身!没加载完那么多用户就超时了。。。
- 1)模拟用户组的数量
4、定时器生效的范围
-
1)定时器如果放线程组外面,那么对线程组里面所有的取样器都生效
-
2)定时器如果放控制器里面,就是控制器的一级子级,那么它也是对控制器里面的所有的取样器生效的
-
3)如果你只想让这个定时器,只针对具体的一个取样器生效,那么请把它作为那个取样器的子级,就是放到取样器的里面,这样就OK了
5、统一随机定时器
-
可以对sampler请求前做随机时间的延迟
-
它的总延迟时间是下面两个参数之和【随机延迟时间 + 固定偏移值】
-
Random Delay Maximum:
- 暂停的最大随机毫秒数。
-
Constant Delay Offset:
- 除了随机延迟之外要暂停的毫秒数。
6、常数吞吐量定时器
-
这个用得也不是很多,仅仅需要知道有这种方法就可以了
-
Const Throughput Timer
-
当有需求,要以xx的吞吐量(多少QPS)来运行的时候,可以使用这个定时器
- 然后你就可以设置线程组的时候,可以持续运行多久,或者不断运行(循环永远),来看效果
-
然后可以通过聚合报告查看,这个时候,那个吞吐量的值就能保持不变