Jmeter学习笔记(十一)——定时器

默认情况下,Jmeter线程在发送请求之间没有间歇。不设置定时器,短时间内会产生大量访问请求,导致服务器被请求淹没,利用Jmeter进行压测时,一般会和定时器一起,控制请求的吞吐量和并发数。

 

一、定时器的作用域

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

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

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

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

 

二、Jmeter4.0的九种定时器

 

 

 

三、定时器详细介绍

1、固定定时器

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

 

2、高斯随机定时器

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

例如在访问百度首页,然后输入关键词进行搜索,受网络、人等各种因素影响,有的人打开首页后 3s 后则进行了搜索,有时则是 10s或更多时间,在正常情况下,打开百度然后进行搜索,假设用户间隔在 3s-10s 之间,从统计学来看,这个间隔时间可能是一个正态分布或接近正态分布,而不是一个固定的常量。更推荐使用该定时器,能更接近模拟用户实际情况。

 

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

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

下面表示的是随机延迟时间的最大值是100毫秒:

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

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

该图表示的延迟时间为0到100之间的随机数+50

 

 

 

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

通过控制每分钟请求数(即控制吞吐的方式)来控制是否进行延时暂停。

吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组等范围,并且计算吞吐量的依据可以是最近一次线程的执行时延。这种定时器在特定的场景下,还是很有用的。
例如,当我们需要使服务端长期处于一定的压力下时,可以通过该定时器来控制吞吐。
注意:吞吐值可以是常量,也可以使用函数来动态生成,已达成更灵活的使用,满足不同的压力场景。

 

 

 

5、同步定时器(Synchronizing Timer)

该定时器的作用是:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力。实现了某种意义上的并发。

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

(2)Timeout in milliseconds:超时时间,即超时多少毫秒后同时释放指定的线程数

 

 

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

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

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

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

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

 

 

7、JSr R223 Timer   和  BeanShell Timer

 这两种定时器据说很少用到,暂时没有去了解

8、Precise Throughput Timer(精准吞吐量定时器)

该定时器暂时没去了解

posted @ 2019-09-25 11:25  爬虫上的雪碧  阅读(1078)  评论(0编辑  收藏  举报