jmeter性能测试(四-5):定时器

本文详细介绍了jmeter的各种定时器,包括Constant Throughput Timer用于控制吞吐量,JSR223 Timer,Poisson Random Timer,Synchronizing Timer实现并发测试,Uniform Random Timer,Constant Timer模拟用户思考时间,以及Gaussian Random Timer生成高斯分布的延迟。重点讲解了Constant Throughput Timer的设置和应用场景,以及Synchronizing Timer在并发测试中的作用和超时时间的计算方法。

6.1 Bean Shell Timer

6.2 ☆Constant Throughput Timer(常数吞吐量定时器)

  • 作用:该定时器可以方便地控制给定的取样器发送请求的吞吐量
  • 应用场景:例如:了解博客的首页在负载达到20 QPS时的响应时间,即添加一个Constant Throughput time,设置Target throughput(in samples per minute:为1200(这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200,设置Calculate Throughput based on 的值为All active threads 

  • 参数说明:Target throughput(in samples per minute):目标吞吐量;

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 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

 

6.3 JSR223 Timer

6.4 Poisson Randon Timer

设置的线程延迟时间呈松泊分布
    Lambda:松泊分布的期望和方差均为
    Constant Delay offset:固定延迟部分时间

6.5 ☆Synchronizing  Timer

jmeter中使用Synchronizing Timer实现Lr中集合点的功能,模拟多用户并发测试,即多个线程在同一时刻并发请求。

注:

1.把SynchronizingTimer放置于请求之前,通常Jmeter按树状结构顺序执行

2.说明:

名称:自定义名称

  1. Number of Simulated Users to Groupby:每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。
  2. Timeout in milliseconds:

如果设置为0,Timer将会等待线程数达到了"Number

 of Simultaneous Users toGroup"中设置的值才释放。如果大于0,那么如果超过Timeout

  1. inmilliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number

 of Simultaneous Users toGroup"中设置的值,Timer将不再等待,释放已到达的线程。默认为0

【注意】:

  1. 如果设置Timeout in milliseconds为0,且线程数量无法达到"Number

 of Simultaneous Users toGroup by"中设置的值,那么Test将无限等待,除非手动终止。

  1. Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users toGroup by"中设置的值不大于它所在线程组包含的用户数。

2、例子:

添加路径:右键单击线程组,依次选择【添加/定时器/Synchronizing Timer】即可添加集合点

 

添加后,显示如下图所示:

PS:超时时间为0时,默认无超时限制。

实际运行过程中,可能出现请求数当不满足集合点设置的请求数时,JMeter一直卡顿在如下页面:

解决办法是:设置同步定时器的超时时间。

同步定时器(Synchronizing Timer)的超时时间设置要求:

超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

 

6.6 Uniform Randon Timer

让线程暂停一个随机时间,只不过力求随机时间能够更均匀,都会出现
    Random Delay Maximum:随机延迟时间部分
    Constant Dealy Offset:固定延迟时间

 

6.7 固定定时器(Constant time)

模拟用户思考时间

当放置Constant Timer于两个http请求之间,那么它代表的含义是:在上一个请求发出至完成后,

开始Contant Timer指定的时间,最后再发出第二个请求.它并不是代表两个请求之间的发送间隔时间

 

6.8 高斯随机定时器

 

如需要每个线程的延迟时间是符合标准正态分布的随机时间停顿,那么使用这个定时器,总延迟 = 高斯分布值(平均0.0和标准偏差1.0)* 指定的偏差值+固定延迟偏移(计算参考:Math.abs((this.random.nextGaussian() * 偏差值) + 固定延迟偏移))。

另一种解释方法,在高斯随机定时器中, 随机时间在固定延迟偏移附近,概率符合高斯曲线分布。

下面这个例子中,高斯随机定时器的偏差为1000ms,固定延迟偏移为3000,执行结果如下:

 

如有侵权,请联系我,我将立即删除    QQ:2592183609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值