一、定时器的作用域
1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面)。
2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行。
3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入。
二、常用定时器使用
1、固定定时器(Constant Timer)
如果需要每个sample请求均延迟,则将定时器放在与请求持平的位置(线程组下),若只针对一个请求延迟,则将定时器放在该请求子节点中,那么此时会与上一个sample的请求延迟间隔x秒。
如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。
我们通常说的响应时间,应该大部分情况下是针对某一个具体的sampler(http请求),而不是针对一组sampler组合的事务 。
2、高斯随机定时器(Gaussian Random Timer)
如果需要每个sample请求均延迟,则将定时器放在与请求持平的位置(线程组下),若只针对一个请求延迟,则将定时器放在该请求子节点中,那么此时会与上一个sample的请求延迟间隔x秒。
如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,表示暂停时间会分布在100到400之间,计算公式参考:((() * 300) + 100)
3、固定吞吐量定时器(Constant Throughput Timer)
可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。
作用:按指定的吞吐量执行,以每分钟为单位。计算吞吐量依据是最后一次线程的执行时延。
this thread only: 设置每个线程的吞吐量。总的吞吐量=线程数*该值。(常用的设置)
all active threads in current thread group:吞吐量被分摊到当前线程组所有的活动线程上。每个线程将根据上次运行时间延迟。
4、同步定时器(Synchronizing Timer5、同步定时器(Synchronizing Timer)
这个定时器作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力
(1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数,一般填的和线程数一致。
(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数。