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类似。同时它也支持将参数传递给脚本作为参数来使用。

相关推荐
Goldn.1 小时前
Java核心技术栈全景解析:从Web开发到AI融合
java· spring boot· 微服务· ai· jvm· maven· hibernate
李慕婉学姐2 小时前
【开题答辩过程】以《基于Android的出租车运行监测系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·后端·vue
m0_740043733 小时前
SpringBoot05-配置文件-热加载/日志框架slf4j/接口文档工具Swagger/Knife4j
java·spring boot·后端·log4j
编织幻境的妖3 小时前
SQL查询连续登录用户方法详解
java·数据库·sql
未若君雅裁3 小时前
JVM面试篇总结
java·jvm·面试
kk哥88993 小时前
C++ 对象 核心介绍
java·jvm·c++
招风的黑耳4 小时前
我用SpringBoot撸了一个智慧水务监控平台
java·spring boot·后端
xunyan62344 小时前
面向对象(下)-接口的理解
java·开发语言
程序员游老板4 小时前
基于SpringBoot3+vue3的爱心陪诊平台
java·spring boot·毕业设计·软件工程·课程设计·信息与通信
期待のcode4 小时前
Springboot核心构建插件
java·spring boot·后端