Jmeter -- 定时器
一、定时器的作用域
1. 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
2. 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3. 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;
二、定时器的作用
用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段
三、常用定时器
1. 固定定时器 constant timer
可以让每个线程在请求之前按相同的指定时间停顿。固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间
对于单个请求来说,是两次迭代之间的时间间隔
对于事务控制器来说,模拟的是真实用户在操作过程中的等待时间
如果Sampler的响应时间太短,而脚本中别的元素(如控制器等)执行时间远远超过了正常Sampler的执行时间,就会导致误差。我们可以在编写测试脚本的时候,1)通过在Sampler之间增加比响应时间大几个数量级的思考时间,2)通过增加虚拟用户数目的方式来测试被测系统的吞吐量,尽量减少测试工具本身可能会对测试结果产生的不利影响。
2. 固定吞吐量定时器 constant throughput timer
可以让jemeter以指定吞吐量执行
吞吐量的计算范围可以是当前线程、当前线程组、所有线程组等
1)This thread only:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的target Throughput 乘以该线程的数量。
2)all active threads:设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在上次运行结束后等待合理的时间再次运行。活跃线程指同一时刻同时运行的线程。
3)all active threads in current thread group:设置的target Throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程时,改选项和all active threads选项的效果完全相同。
4)all active threads(shared):与all active threads的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。
5)all active threads in current thread group(shared):与all active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间再次运行。
3. 同步定时器 synchronizing timer
集合点,作用是阻塞线程,直到指定的线程数量到达后,一起释放,可以瞬间产生很大的压力