Jmeter系列-定时器Timers的基本介绍(11)

2023-09-16 16:37:34

简介

JMeter中的定时器(Timer)是一种重要的元件,用于模拟用户在不同时间间隔内发送请求的场景。通过使用定时器,可以模拟负载、并发和容量等不同情况下的请求发送频率。

使用定时器

  • 可以在取样器下添加定时器,这样定时器只会作用于当前取样器
  • 也可以在线程组下添加多个定时器,统计定时器的总和,然后作用于线程组下的所有取样器

定时器的作用域

  • 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
  • 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
  • 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;

定时器介绍

在这里插入图片描述

1、固定定时器

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

2、固定定时器放到线程组下其作用域是所有请求都会延迟固定器设置的时间,如果放到请求内,作用域是单个请求延迟时间(常用)。

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

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

2、统一随机定时器

在这里插入图片描述
它产生的延迟时间是个随机值,而各随机值出现的概率均等。总的延迟时间等于一个随机延迟时间加上一个固定延迟时间,用户可以设置随机延迟时间和固定延迟时间。

总延迟时间=指定范围内的随机时间 + 固定延迟时间。
在这里插入图片描述

andom Delay Maximum(in milliseconds):随机延迟最大的时间 单位毫秒,比如我这里设置为1000ms

Constant Delay Offset(in milliseconds):固定延迟时间 单位毫秒,我这里设置为2000ms

那么总的延迟时间范围是2000毫秒~3000毫秒之间的值。

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

在这里插入图片描述
用来控制吞吐量的定时器。和 Constant Throughput Timer 类似,但是能更精准的控制请求。区别就是 Constant Throughput Timer 根据时间来做定时器(到了多少秒就发请求);Precise Throughput Timer 是根据吞吐量在做计时器(到了多少量就发请求)。也就是能做到控制请求的速度和个数。

参数介绍
线程以确保目标吞吐量(Delay threads to ensure target throughput)

  • 目标吞吐量(每个“吞吐期”的样本)(Target throughput (in samples per “throughput period”)):期望测试的TPS,可以精确到多位小数(不过最终报告只会有1位小数)
  • 吞吐量周期(秒)(Throughput period (seconds)):在多少秒内执行测试的TPS(因为TPS单位是秒,这里固定使用1秒即可)
  • 测试持续时间(秒)(Test duration (seconds)):测试时长,与前面线程组的数值保持一致即可

批处理离开

  • 批处理中的线程数(线程)(Number of threads in the batch (threads)):是指准备好了多少个线程后一起发起请求(即集合点),取与TPS保持一致的数值(如果TPS是小数,则这里向上取整)
  • 批处理中的线程之间的延迟(ms)(Delay between threads in the batch (ms)):第一批与第二批处理之间的延迟时间;默认即可

设置以确保可重复的顺序

  • 随机种子(从0变为随机)(Random seed (change from 0 to random)):非0随机种子可以重复;0不可重复,默认即可

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

在这里插入图片描述
可以让JMeter以指定数字的吞吐量(即指定TPS)执行,注意的是这里要求指定每分钟的执行数,而不是每秒。在控制对服务器施压非常实用,如已知服务器每分钟最大能处理多少线程数的情况下,要对服务器进行长时的疲劳强度测试。

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

5、JSR223定时器(JSR223 Timer)

JSR定时器,在jemter最新的版本中,新增了这个定时器,可以这么理解,这个定时器相当于BeanShell定时器的“父集”,它可以使用java、JavaScript、beanshell等多种语言去实现你希望完成的事情。
在这里插入图片描述
参数说明

  • Language(脚本语言): 选择脚本语言;
  • Parameters(参数:String/String[] 类型参数): 传递给脚本的参数;
  • Script file: 脚本文件路径,脚本执行后返回值为定时器的延迟时间(单位为毫秒);
  • Script compilation caching(如果可用,缓存编译脚本): 如果使用的语言支持可编译接口(Groovy是其中之一,Java、BeanShell和javascript不是),JMeter将使用跨测试计划的唯一字符串来缓存脚本编译的结果。
  • Script: 手动编写脚本。

使用
在这里插入图片描述
在这里插入图片描述

6、同步定时器(Synchronizing Timer)

在这里插入图片描述
同步计时器,用来模拟多用户并发,或者说更严格的并发场景。

用来设置集合点,阻塞线程,同步虚拟用户,直到指定的线程数量到达后,恰好在同一时刻执行任务,再一起释放,可以瞬间产生很大的压力。

注意:一般情况,并发用户数多少,同步定时器就写多少。(多少并发就要等多少个人到齐一起释放

参数说明

Number of Simulated Users to Group by(模拟用户组数量):
集合点个数 (执行的线程数),如果设置为0,等于设置为线程租中的线程数量。 
 
Timeout in milliseconds(超时时间):
指定线程数多少秒没集合到算超时(以毫秒为单位),默认为0。
如果设置为0,该定时器将会等待线程数达到了 "模拟用户组数量" 中设置的值才释放,不够的话就死等。
如果大于0,那么如果超过 "超时时间" 中设置的最大等待时间后还没达到 "模拟用户组数量" 中设置的值,Timer 将不再等待,释放已到达的线程。

(1)上面两个参数如果都设置了值,则在实际中是哪个条件先达到,定时器先执行哪个,如第一个参数释放线程数量先达到,则不会管超时时间的值,timer 会释放;如果第二个参数超时时间先达到,则不会再等线程数量,按照目前超时的时间点集合的线程数,timer 释放。 
(2)同步定时器(Synchronizing Timer)的超时时间设置要求: 超时时间 > 请求集合数量 * 1000 / (线程数 / 线程加载时间)

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

在这里插入图片描述

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

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

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

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

8、高斯随机定时器(Gaussian Random Timer)

在这里插入图片描述

高斯定时器,生成一个呈高斯分布的时间间隔。

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

总延迟时间 = 高斯分布值(平均0.0和标准差1.0)* 指定的偏差值 + 固定延迟偏移。

参数说明

  • Deviation(偏差):偏差值,是一个浮动范围;
  • Constant Delay Offset(固定延迟偏移):固定延迟时间。

9、BeanShell定时器(BeanShell Timer)

在这里插入图片描述

Bean Shell定时器,顾名思义是:互相交替,其节点下的取样器交替执行。根据被控制器触发执行次数,去依次执行控制器下的子节点<逻辑控制器、采样器>。被触发执行可以由线程组的线程数、循环次数、逻辑控制器触发。

参数说明

Reset Interpreter(重置解释器):
每次迭代是否重置解析器,默认为 false;在长时间运行的脚本中建议设置为 true。 
 
Parameters(参数:String 或者 String[] ):
BeanShell 脚本的入参。入参可以是单个变量(字符串);也可以是(字符串)数组,若是字符串数组,两个元素之间用空格隔开;也可以是常量。 
 
File Name(文件名):
BeanShell 脚本可以从脚本文件中读取。 
 
Script(脚本):
在 Script 区直接写 BeanShell 脚本。

演示
在这里插入图片描述
在这里插入图片描述

参考文章

更多推荐

将近 5 万字讲解 Python Django 框架详细知识点(更新中)

Django框架基本概述Django是一个开源的Web应用后端框架,由Python编写。它采用了MVC的软件设计模式,即模型(Model)、视图(View)和控制器(Controller)。在Django框架中,模型层负责与数据库交互,进行数据的增、删、改、查等操作。视图层用于封装结果,生成页面展示的HTML内容。控制

基于Simulink的用于电力系统动态分析

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Matlab代码、Simulink及文章💥1概述本文介绍了基于Simulink

KT142C-sop16语音芯片的4个IO口如何一对一触发播放_配置文件详细说明

目录KT142C是一个提供串口的SOP16语音芯片,完美的集成了MP3的硬解码。内置330KByte的空间,最大支持330秒的语音长度,支持多段语音,支持直驱0.5W的扬声器无需外置功放如上图,芯片有4个IO口可以一对一,详见如下说明2.3芯片4个IO触发口功能-配置文件-简单说明2.4配置文件注意事项--以及常见问题

pytest框架前后置设置,以及pytest默认规则

一、pytest框架的默认规则1、模块名默认必须以test开头或者以test结尾2、测试类必须以Test开头,并且不能有__init__方法3、测试方法默认必须以test开头当然以后的一些默认规则除测试类不能使用__init__方法外其余的都是可配置的,当然一般情况下我们也不会去修改这些默认配置。二、使用setup与t

《PostgreSQL与NoSQL:合作与竞争的关系》

🌷🍁博主猫头虎(🐅🐾)带您GotoNewWorld✨🍁🐅🐾猫头虎建议程序员必备技术栈一览表📖:🛠️全栈技术FullStack:📚MERN/MEAN/MEVNStack|🌐Jamstack|🌍GraphQL|🔁RESTfulAPI|⚡WebSockets|🔄CI/CD|🌐Git&Versio

盐碱地改良通用技术 铁尾砂改良学习

声明本文是学习GB-T42828.1-2023盐碱地改良通用技术第1部分:铁尾砂改良.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件描述了铁尾砂改良盐碱地技术的技术原理,规定了技术要求、田间管理和效果评价。本文件适用于铁矿山企业采用经破碎、粉磨、磁选物理工艺选矿后得到的高硅铁尾砂对板结

时间复杂度讲解(数据结构)

目录引言什么是数据,结构和算法时间复杂度的概念如何计算时间复杂度总结引言hello大家好,我是boooooom君家宝。在前期的博客中博主呢对c语言的一些重要知识点进行了讲解,接下来博主的博客内容将为大家呈现的是数据结构算法的知识讲解,纯c语言版本。由于c语言对于数据结构和算法的进阶知识不是非常的契合,所以暂时只用c语言

kafka

1.Kafka概述2.Kafka安装部署3.Kafka架构深入1.Kafka概述1.1定义(1)Kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要应用于大数据实时处理领域。(传统使用)分布式:多台服务器干一件事。发布/订阅:消息的发布者不会将消息直接发送给特点的订阅者,而是将发布的消

现场总线学习

文章目录1.现场总线现状2.数据编码2.1数字数据的数字编码2.2数字数据的模拟编码3.通信方式!!!4.局域网及其拓扑结构5.工业总线协议6.为什么要在can协议的控制器和bus总线之间,连接一个can收发器?7.那其他协议也需要这种收发器么?8.OSI网络协议体系1.现场总线现状2.数据编码2.1数字数据的数字编码

PyTorch实战:实现Cifar10彩色图片分类

目录前言一、Cifar10数据集classtorch.utils.data.Datasettorch.utils.data.DataLoader二、定义神经网络普通神经网络:定义损失函数和优化器训练网络-NetCPU训练模型准确率​编辑GPU训练训练网络-LeNet模型准确率点关注,防走丢,如有纰漏之处,请留言指教,非

【智能家居-大模型】构建未来,聆思大模型智能家居交互解决方案正式发布

LISTENAI近日,国内11家大模型陆续通过《生成式人工智能服务管理暂行办法》备案,多家大模型产品已正式开放,激发了新一轮大模型热潮。大模型在自然语言理解方面的巨大突破,实现了认知智能的技术跃迁,带来了时代的智慧涌现,更是为智能家居行业带来了重大的发展契机。依托通用认知大模型,聆思率先上线了面向智能家居领域的大模型人

热文推荐