JMeter定时器使用小结

一、定时器的作用域

1、无论定时器位置在Sampler之前还是下面,定时器是在每个sampler(采样器)之前执行的,而不是之后;

2、当执行一个Sampler之前时,所有当前作用域内的定时器都会被执行;

3、如果希望定时器仅应用于其中一个Sampler,则把定时器作为子节点加入;

4、如果希望在Sampler执行完之后再等待,则可以使用Sampler中的Test Action;

JMeter定时器使用小结

二、定时器的作用

1、BeanShell定时器(BeanShell Timer)

JMeter定时器使用小结

利用BeanShell编程实现的定时器,十分强大,可以根据需要自己实现需要达到的效果,如在某个变量达到指定值的时候等待一下(其中BeanShell为一种松散类型的脚本语言,类似JS)。

参数说明:

Reset Interpreter(重置解释器):是否每次重置迭代解释器,默认选择false,一般在长时间运行脚本时选择true;

Paremeters(参数):beanshell timer的入参,可以是单个变量也可以是数组;

File Name:从脚本文件中读取定时器的脚本;

Script:直接在script区域编写BeanShell定时器脚本;

2、固定吞吐量定时器(Constant Throughput Timer)

JMeter定时器使用小结

可以让JMeter以指定数字的吞吐量(即指定TPS)执行,注意的是这里要求指定每分钟的执行数,而不是每秒。在控制对服务器施压非常实用,如已知服务器每分钟最大能处理多少线程数的情况下,要对服务器进行长时的疲劳强度测试。

Calculate Throughput based on:

有5个选项,分别是:

this thread only:控制每个线程的吞吐量,选择这种模式时,总的吞吐量 = Target throughput * 线程的数量

all active threads:设置的Target throughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

all active threads in current thread group:设置的Target throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和all active threads选项的效果完全相同。

all active threads (shared ):与All active threads 的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

all cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

3、JSR223定时器(JSR223 Timer)

JMeter定时器使用小结

这个定时器相当于BeanShell定时器的“父集”,它可以使用beanshell、java、javascript、groovy等多种语言去实现你希望完成的事情。

4、泊松随机定时器(Poisson Random Timer)

JMeter定时器使用小结

这个定时器在每个线程请求之前按随机的时间停顿,大部分的时间间隔出现在一个特定的值,总的延迟就是泊松分布值和偏移值之和。

上面表示暂停时间会分布在 100到400毫秒之间

1)Lambda(in milliseconds):兰布达值(以毫秒为单位);

2)Constant Delay Offset(in milliseconds):固定延迟偏移(以毫秒为单位),暂停的毫秒数减去随机延迟的毫秒数。

5、同步定时器(Synchronizing Timer)

JMeter定时器使用小结

这个定时器和Loadrunner当中的集合点(rendezvous point)作用相似,其作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力(可以用于绝对并发测试,即同一“时刻”对某一个服务施加多少用户请求,这里的“多少用户”指线程数,这样更容易测试出线程资源挣用导致的死锁等问题)

1)Number of Simulated Users to Group by:模拟用户的数量,即指定同时释放的线程数量;

2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数(即时没有达到前面设置的线程数量),如果为 0 将一直等待,直到达到前面设置的线程数量

6、均匀随机定时器(Uniform Random Timer)

JMeter定时器使用小结

和高斯随机定时器的作用差异不大,区别在于延时时间在指定范围内且每个时间的取值概率相同,每个时间间隔都有相同的概率发生,总的延迟时间就是随机值和偏移值之和。

上面表示的是延迟时间为 0到100之间的随机数 + 50 毫秒

1)Random Delay Maximum(in milliseconds):随机延迟时间的最大毫秒数;

2)Constant Delay Offset(in milliseconds):暂停的毫秒数减去随机延迟的毫秒数。

7、固定定时器(Constant Timer)

JMeter定时器使用小结

如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间

对于“java请求”这个sampler来说,定时器相当于loadrunner中的pacing(两次迭代之间的间隔时间);

对于“事务控制器”来说,定时器相当于loadrunner中的think time(思考时间:实际操作中,模拟真实用户在操作过程中的等待时间)。

8、高斯随机定时器(Gaussian Random Timer)

JMeter定时器使用小结

如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,上图表示暂停时间会分布在100到400毫秒之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100)

-- End --

更多内容,请点击 阅读原文 查看。

文末寄语:  要是在力量底下屈服,那我身为男人还有什么意义。我绝对不会让我的人生留下后悔。



留言