Jmeter 定时器的设置(集合点、思考时间 的应用 20190730(10)


  • 为啥设置定时器

1.性能测试中,我们经常提到的一个概念‘并发’,其实在实际真实的性能测试中是不存在真正的并发的。为了更真实的模拟对一个请求的并发测试场景,我们通常采用设置‘集合点’达到这个效果:

模拟用户并发时,设置集合点,为此可以加入同步定时器 Synchronizing Timer。

2.默认情况下,jmeter发送每个请求之间是没有延时的,如果线程数足够大,瞬间就会将服务器压死:

多接口组成的场景用例,设置思考时间,为此可以加入其他类型的Timer (有固定的、有随机的等)

  • 基本规则:定时器在每个sampler之前去执行

一、集合点的设置

 

  • Synchronizing Timer 同步定时器:阻塞线程,直到指定的线程数量到达后,再一起释放,可以瞬间产生很大的压力

参数说明:

Number of Simulated Users to Group   集合数量(要分组的模拟用户数量),设置的值不大于它所在线程组包含的用户数。如果设置为0,等同于设置为线程租中的线程数量。

Timeout in milliseconds  超时时间 : 如果大于0,比如5000时,等待5000(毫秒为单位)后,Timer不再等待,无论是否达到集合数量,都释放已到达的线程。

              默认为0,一直等待,Timer一直等待线程数达到了集合数量才释放,不到达则不释放。

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

首先你要弄明白同步计时器的超时时间定义:若在超时时间内,性能测试并发场景设定的并发样本数量未达到,则jmeter认为超时,会立即执行并发。
超时时间的设定值约束:超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

分母计算结果为:每秒启动的线程数;
请求集合数量:为设定的性能测试场景的样本并发数量;
不等式右边计算结果为:加载性能并发样本所需时间(毫秒)

综上,同步定时器的超时时间建议设置为大于不等右边。

参照:https://www.cnblogs.com/fengpingfan/p/5583594.html

注意点:

如果设置Timeout in milliseconds为0,且线程数量无法达到"Number of Simultaneous Users to Group by"中设置的值,那么Test将无限等待,除非手动终止。

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

(原文:Synchronizing timer blocks only within one JVM, so if using Distributed testing ensure you never set "Number of Simultaneous Users to Group by" to a value superior to the number of users of its containing Thread group considering 1 injector only)

 

二、其他定时器,可用于设置思考时间

  • Constant Timer   固定定时器:每个线程在请求之前按相同的指定时间停顿
  • Gaussian Random Timer 高斯随机定时器: 每个线程在请求前按随机时间停顿
  • Uniform Random Timer 均匀随机定时器:会暂停每个线程请求一个随机时长,每个时间间隔都有同样的出现几率
  • Constant Throughput Timer 固定吞吐量定时器:可变暂停时长,通过计算来保证总吞吐量(每分钟采样数)尽可能接近指定的值,
  • BeanShell Timer: 用来产生延迟

固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。

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

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

通常说的响应时间,大部分情况下是针对某一个具体的sampler(http请求),而不是针对事务的响应时间(事务由一组sampler组成)。

固定吞吐量定时器可以让JMeter以指定数字的吞吐量(即指定TPS,只是这里要求指定每分钟的执行数,而不是每秒)执行。

吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组等范围,并且计算吞吐量的依据可以是最近一次线程的执行时延。这种定时器在特定的场景下,还是很有用的。

三、定时器的作用域

定时器对其作用范围内的每一个sampler 有效

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

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

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

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

 参照:https://www.cnblogs.com/wxinyu/p/7687063.html  九种定时器的介绍

参照:https://www.jianshu.com/p/32a44efd8395

参照:http://www.mamicode.com/info-detail-2230433.html

参照:http://makaidong.com/licl11092/11682_689956.html

 

在添加元件后,可以按照这个顺序调整元件的位置:配置元件(cookie \header管理器等)--》前置处理器--》定时器--》取样器--》后置处理器--》断言--》监听器

===============================

 

实例 https://yq.aliyun.com/articles/708146?spm=a2c4e.11155472.0.0.4ad91c70YfClbo

简单压测---到场景编排---压测执行

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM