JMeter的定时器

《JMeter核心技术、性能测试与性能分析(编程与应用开发丛书)》(张永清,张永松)【摘要 书评 试读】- 京东图书

安装一下JMeter,对照起来看。https://blog.csdn.net/brucexia/article/details/151579569

在JMeter中,定时器类似于LoadRunner中的思考时间(think time),用来设置线程的延迟和同步时间,如图3-16所示。定时器通常是在每个取样器发出请求之前执行。定时器主要是有时为了让一个线程(并发用户)的操作更加符合真实的人工使用场景,比如,用户在点击某个系统某个界面上的按钮或者打开某个页面时,都会存在思考时间或者操作的延迟时间。

图3-16 如何添加定时器

从图3-16中可以看到,定时器主要包括以下内容。

3.5.1 Synchronizing Timer

Synchronizing Timer又叫同步定时器,是一种阻塞型的定时器。其目的主要用于设置每次阻塞到指定的线程数量后,一次性释放所有的阻塞的线程,再同时发起取样器请求。有点类似LoadRunner中的集合点(或者又叫同步点)。相当于是让指定的数量的线程同时达到了可执行状态后,再同时去发起取样器请求,如图3-17所示。

图3-17 Synchronizing Timer执行过程

Synchronizing Timer主要包含如下两个参数配置:

  • 模拟用户组的数量:用于设置每次让多少个线程进行阻塞,以达到统一执行的状态。
  • 超时时间以毫秒为单位:用于设置等待的时长,以让所有的线程达到可执行的状态。如果超过这个时长后,指定的所有线程还没有达到可执行的状态,那么将不再继续等待,会直接向下执行。

3.5.2 吞吐量定时器

(1)Constant Throughput Timer:又叫常数吞吐量定时器,顾名思义就是根据设置的吞吐量的值来控制线程的运行延迟。可以通过设置每分钟的吞吐量来控制线程的延迟,比如,设置1分钟内的吞吐量为30,那么如果在1分钟内已经达到30的吞吐量后,线程就会暂停发起取样器请求,直到下一分钟开始,线程才会继续发送请求。计算吞吐量的方式包括只有此线程、所有活动线程、当前线程组中的所有活动线程、所有活动线程(共享)、当前线程组中的所有活动线程(共享)。

(2)Precise Throughput Timer:又叫准确的吞吐量定时器,与Constant Throughput Timer有点类似,可以准确地根据设置的每个吞吐量周期下的目标吞吐量,来控制线程发起取样器请求的延迟时长。该定时器主要包含如下参数:

  • 目标吞吐量(每个"吞吐期"的样本):设置每个"吞吐量周期"要从所有受影响的采样器请求中获取的最大吞吐量。该设置包括线程组中的所有线程的吞吐量之和。
  • 吞吐量周期(秒):设置统计吞吐量的周期时长,单位为秒。
  • 测试持续时间(秒):设置本次吞吐量定时器运行的持续时长,单位为秒。
  • 批处理离开-批处理中的线程数(线程):用于设置批处理中的线程数量。
  • 批处理离开-批处理中的线程之间的延迟(ms):用于设置批处理中线程之间的延迟时长,单位为毫秒。
  • 随机种子(从0变为随机):设置随机数生成的种子值,默认为0,表示完全随机。

3.5.3 其他定时器

(1)固定定时器:用于设置每个线程在发起取样器请求之前等待相同的一段时长,单位为毫秒。

(2)统一随机定时器:用于设置每个线程在发起取样器请求之前随机等待一段时长,单位为毫秒。

(3)高斯随机定时器:设置每个线程在发起取样器请求之前随机等待一段时长,可以指定该时长的偏差范围。由于该定时器的偏差变化符合高斯曲线分布,所以命名为高斯随机定时器。

(4)JSR223 Timer:指的是使用JSR223(全称为Java Specification Request 223,是一个Java语言平台发布的规范)脚本语言来生成线程延迟。在JSR223 Timer中支持的脚本语言包括Groovy、Java、Javascript、Jexl等。和JSR223 预处理程序类似,JSR223 Timer同时也支持将参数传递给脚本作为参数来使用。

(5)泊松随机定时器:与统一随机定时器类似,同样也是用于设置每个线程在发起取样器请求之前随机等待一段时长,时长的单位为毫秒。与统一随机定时器不同的是,泊松随机定时器的延迟时长通常都发生在一个特定值的附近,彼此相差不会很大并且符合泊松分布,所以又叫泊松随机定时器。

(6)BeanShell Timer:即BeanShell定时器,指的是使用自定义的BeanShell脚本语言来生成线程延迟,与JSR223 Timer类似。同时它也支持将参数传递给脚本作为参数来使用。

相关推荐
Le1Yu37 分钟前
配置管理的配置与拉取、热更新的配置、动态路由
java
Seven9738 分钟前
剑指offer-34、第⼀次出现的字符
java
摇滚侠1 小时前
Spring Boot 3零基础教程,properties文件中配置和类的属性绑定,笔记14
java·spring boot·笔记
星光一影1 小时前
HIS系统天花板,十大核心模块,门诊/住院/医保全流程打通,医院数字化转型首选
java·spring boot·后端·sql·elementui·html·scss
JAVA学习通1 小时前
零基础OSS组件(Java)
java·linux·leetcode
草莓熊Lotso1 小时前
《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
java·开发语言·c++·算法
YJlio1 小时前
Process Monitor 学习笔记(5.7):长时间运行追踪与日志文件体积的控制
java·笔记·学习
失散131 小时前
分布式专题——45 ElasticSearch基础数据管理详解
java·分布式·elasticsearch·架构
没有bug.的程序员1 小时前
分布式监控体系:从指标采集到智能告警的完整之道
java·分布式·告警·监控体系·指标采集
想不明白的过度思考者2 小时前
JavaEE初阶——TCP/IP协议栈:从原理到实战
java·网络·网络协议·tcp/ip·java-ee