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

news2024/11/26 2:28:51

简介

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 脚本。

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

参考文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习第五课--广告点击率预测项目以及特征选择的介绍

这个项目的主要的目的是通过给定的广告信息和用户信息来预测一个广告被点击与否。 如果广告有很大概率被点击就展示广告&#xff0c;如果概率低&#xff0c;就不展示。 因为如果广告没有被点击&#xff0c;对双方&#xff08;广告主、平台&#xff09;来讲都没有好处。所以预测…

应用商店优化之关键词优化指南1

提高我们应用在应用商店中的知名度&#xff0c;完全取决于关键词。找到一些关键词的策略之后&#xff0c;我们应该选择最有前途的关键词并对其进行研究&#xff0c;从而创建新的组合和长尾关键词。 1、寻找关键词&#xff0c;找到一些潜在的关键词创意。 尝试考虑一下我们将如…

Element表格之表头合并、单元格合并

一、合并表头 el-table配置 :header-cell-style"headFirst"headFirst({ row, colunm, rowIndex, columnIndex }) {let base { background-color: rgba(67, 137, 249, 0.3), color: #333, text-align: center };//这里为了是将第一列的表头隐藏&#xff0c;就形成了合…

Python开发环境配置

Python 作为一个语言&#xff0c;代码需要一个解释器来进行解释&#xff0c;这个解析器就是专门针对 Python 代码的&#xff0c;只有它才知道这些代码是什么意思。编写代码也需要一定的工具&#xff0c;理论上所有的纯文本都可以编写代码&#xff0c;但工欲善其事必先利其器&am…

Python 办公自动化之 PDF 操作详解

1、PyMuPDF简介 1. 介绍 在介绍PyMuPDF之前&#xff0c;先来了解一下MuPDF&#xff0c;从命名形式中就可以看出&#xff0c;PyMuPDF是MuPDF的Python接口形式。 MuPDF MuPDF 是一个轻量级的 PDF、XPS和电子书查看器。MuPDF 由软件库、命令行工具和各种平台的查看器组成。 M…

安卓修改rom 移植rom必备常识 lib--**so文件基本解析

安卓系统lib-so文件 解包安卓固件中lib lib64分区下存在很多后缀为so的文件&#xff0c;其实都是系统的动态库&#xff0c;类似于win下面的*.dll&#xff0c;一般是由C/C编译成的动态库.在系统lib的文件夹下&#xff0c;置换移植其他系统的程序也需要修改更换相关so文件.没有它…

Android---底部弹窗之BottomSheetDialog

BottomSheetDialog 是Android开发中的一个弹出式对话框&#xff0c;它从屏幕底部弹出并覆盖部分主界面。 1. BottomSheetDialog的使用 // 参数2&#xff1a;设置BottomSheetDialog的主题样式&#xff1b;将背景设置为transparent&#xff0c;这样我们写的shape_bottom_sheet_…

C【函数】

1.常用API 1.strcpy&#xff1a;#include<string.h> char * strcpy ( char * destination, const char * source );int main(){char arr1[] "bit";char arr2[20] "###########";// bit\0########strcpy(arr2, arr1);printf("…

ChatGPT的未来

随着人工智能的快速发展&#xff0c;ChatGPT作为一种自然语言生成模型&#xff0c;在各个领域都展现出了巨大的潜力。它不仅可以用于日常对话、创意助手和知识查询&#xff0c;还可以应用于教育、医疗、商业等各个领域&#xff0c;为人们带来更多便利和创新。 在教育领域&#…

【刷题篇】贪心算法(二)

文章目录 找出工作所需最短时间活动选择无重叠区间 找出工作所需最短时间 某工厂有n个独立的作业&#xff0c;由m台相同的机器进行加工处理。作业i所需的加工时间为ti&#xff0c;任何作业在被处理时不能中断&#xff0c;也不能进行拆分处理。现厂长请你给他写一个程序:算出n个…

LLM 04-大模型的数据

LLM 03-大模型的数据 到目前为止&#xff0c;我们已经讨论了大型语言模型的行为&#xff08;能力和损害&#xff09;。现在&#xff0c;我们要剥开洋葱的第一层&#xff0c;开始讨论这些模型是如何构建的。任何机器学习方法的起点都是训练数据&#xff0c;因此这就是我们开始的…

JDK10特性

文章目录 JAVA10概述语法层次的变化局部变量的类型推断不能使用类型推断的场景变量的声明初始值nulllambda表达式方法引用为数组静态初始化成员变量不能使用其他不可以的场景 API层次的变化集合的copyOf方法 总结 JAVA10概述 2018年3月21日&#xff0c;Oracle官方宣布JAVA10正…

sizeof和strlen求取数组指针之辨析

目录 一维数组中sizeof Vs strlen 整型数组sizeof 字符数组 sizeof strlen 字符串数组 sizeof strlen 字符串的指针char *p sizeof strlen 二维数组中sizeof 今天主要来讲题目主要是数组&指针辨析题和笔试题。&#x1f197;最近心情有点焦虑。大家一定专注…

进阶测试知识之风险基础测试

风险基础测试&#xff08;Risk-Based Testing&#xff09;是一种测试策略&#xff0c;其主要思想是根据产品或系统中各个部分的风险程度来优先进行测试。风险通常是由两个因素决定的&#xff1a;一是问题&#xff08;如缺陷或错误&#xff09;发生的可能性&#xff0c;二是如果…

嵌入式入门教学——模电基础概念

目录 1、模拟信号和模拟电路 2、研究领域 3、常用术语 3.1、共价键 3.2、电场 3.3、温度的电压当量 3.4、动态信号 3.5、直流电流和交流电流 3.6、内阻 3.7、信号频率 3.8、电容 3.9、电感 3.10、相位 3.11、信号失真 3.12、电导 3.13、跨导 3.14、电位 3.15…

【小沐学NLP】AI辅助编程工具汇总

文章目录 1、简介2、国内2.1 aiXcoder2.1.1 工具特点2.1.2 部署方式2.1.3 使用费用2.1.4 代码测试2.1.4.1 代码搜索引擎2.1.4.2 在线体验 2.2 CodeGeeX2.2.1 工具特点2.2.2 部署方式2.2.3 使用费用2.2.4 代码测试 2.3 Alibaba Cloud AI Coding Assistant&#xff08;cosy&#…

PCalc for Mac - 打开科学计算新世界的好用工具

无论您是学生、教师、科学家还是专业计算人员&#xff0c;一款强大而易于使用的科学计算器都是必不可少的工具。现在&#xff0c;我们向您介绍PCalc for Mac&#xff0c;这是一款功能齐全且界面精美的科学计算器&#xff0c;将为您带来卓越的计算体验。 PCalc for Mac是一款专…

第二章 进程与线程 五、线程(概念)

一、定义 &#xff08;1&#xff09;线程是一个基本的CPU执行单元&#xff0c;也是程序执行流的最小单位。 &#xff08;2&#xff09;引入线程后提升了系统的并发度。 &#xff08;3&#xff09;引入线程后&#xff0c;进程只作为除CPU之外的系统资源的分配单元。 二、引入…

POJ 3684 Physics Experiment 弹性碰撞

一、题目大意 我们有N个半径为R厘米的球&#xff0c;固定在距离地面高度为H的管道上&#xff0c;刚开始释放第一个&#xff0c;之后每过一秒释放一个&#xff0c;释放下面的球不会影响到上面的球的高度&#xff0c;忽略一切阻力&#xff0c;认为球之间的碰撞为弹性碰撞&#x…

传统生产者和消费者问题,Sychronized版和Lock版

1.生产者和消费者问题Synchronized版 面试&#xff1a;单例模式、排序算法、生产者消费者、死锁 package com.kuang.pc;/*** 线程之间的通信问题&#xff0c;生产者和消费者问题&#xff01; 等待唤醒 &#xff0c;通知唤醒* 线程交替执行 A B 操作同一个变量 num0* A num1;*…