jmeter-定时器

2023-11-17

目录

1、固定定时器

2、统一随机定时器

3、同步定时器

4、固定吞吐量定时器


一、 定时器的使用目的

使用【定时器】的主要目的是模拟用户的“思考时间”,在负载测试领域,“思考时间”代表模拟真实用户行为,就是人们在与web应用程序的交互等待时间。

二、定时器的范围:

定时器会在每个取样器运行之前执行,如果有多个定时器,则在采样器执行之前将运行所有定时器。

根据Jmeter5.0版本,可以使用以下Timer测试元素:

- 固定定时器(Constant Timer)
- 统一随机定时器(Uniform Random Timer)
- 高斯随机定时器(Gaussian Random Timer)
- 泊松随机定时器(Poisson Random Timer)
- 精准吞吐量定时器(Precise Throughput Timer)
- 固定吞吐量定时器(Constant Throughput Timer)
- 同步定时器(Synchronizing Timer)
- BeanShell定时器(Beanshell Timer)
- JSR223定时器(JSR223 Timer)

个人认为,固定定时器和统一随机定时器,足以覆盖90%的测试情况,并建议大家在脚本中使用它们。但是,如果你的思考时间模拟要求基于更复杂的数学和统计分布,那么当然你要了解其他的定时器。

1、固定定时器

如果要让每个线程在请求之间暂停相同的时间,请使用此计时器。

需要注意的是:固定计时器的延时不会计入单个sampler,但会计入事务控制器的时间,如果在事务控制器内使用,则要注意。

2、统一随机定时器

统一随机定时器将线程暂停一个系数:
- 下一个伪随机均匀分布的值,范围在0.0(含)和1.0(不包括)之间
- 乘以“随机延迟最大值”
- 加上“恒定延迟偏移”

它会将采样器暂停一个随机数毫秒,范围从0到99,公式:0.X * 100 + 0 ,其中X可以是0到9之间的数字。如果恒定延迟偏移为10,则0.X * 100 + 10。

3、同步定时器

【模拟用户组的数量(Number of Simulated users to Group by)】:集合点集合够N个用户释放线程,最后一批线程数不够集合点数目时,Jmeter会停止不动,如果碰到这种情况,就只能杀掉Jmeter进程重新执行测试。
比如:线程6个,集合点设置5个。【超时时间(Timeout  in milliseconds)】设置为0,最后一个用户则达不到5个就会一直等。

【超时时间(Timeout  in milliseconds)】:如果设置为0,则定时器会一直等待线程数达到【模拟用户的数量】设置的值,如果大于0,则定时器将以此值为最大“超时取等待线程数” 。如果在超时间隔后未达到等待的用户数,则计时器将停止等待。

4、固定吞吐量定时器


该计时器自行暂停,计算来达到总吞吐量尽可能的接近给定的数字,当然,如果服务器本身有瓶颈,或者其他耗时的测试元件阻碍了它,吞吐量仍然不可避免的会降低。
      吞吐量计算的范围可以为指定为当前线程、当前线程组、所有线程组,并且计算吞吐量的依据可以是最近一次线程的执行时延。 

参数解读:


1)目标吞吐量:每分钟的吞吐量 


2)基于的计算吞吐量:有5个选项: 
- 只有此线程:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 目标吞吐量 乘以该线程的数量

- 所有活动线程:设置的 目标吞吐量  将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

- 所有活动线程(共享):与 所有活动线程 的选项基本相同。唯一区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

- 当前线程组中的所有活动线程:设置的 目标吞吐量 将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和  所有活动线程 选项的效果完全相同。

- 当前线程组中的所有活动线程(共享):与 当前线程组中的所有活动线程 基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

固定吞吐量定时器说明


一般情况,请求之间始终存在间隔,网络中总会出现一些短暂(毫秒类型)延迟,作为用户,我们仍然需要一些时间来思考和点击链接。这也是我们性能测试过程中需要重现实际用户行为的原因。
 我们有固定数量的用户,可以管理用户数每分钟不同数量的请求来测试应用程序,但不能管理请求的频率。这个时候就需要【固定吞吐量计时器】

该定时器允许我们保持总吞吐量不变,当然,如果服务器无法处理这样的负载,吞吐量会降低。虽然Timer被称为【固定吞吐量定时器】,但吞吐量值不需要一定是常量。在测试期间可以更改此值(计数器,Beanshell,JavaScript等函数提供不断变化的值)。

固定吞吐量计时器可以放在测试计划的根元素中。尽量不要使用多个吞吐量恒定时器,因为这可能会导致不同线程组中的请求之间的延迟混淆

恒定吞吐量计时器只能暂停 JMeter线程以减慢它们以达到目标吞吐量,所以要确保有足够的线程来保证每秒所需的请求数量。另外,固定吞吐量计时器仅在分钟级别上才会足够精确,所以需要正确计算加速期并让我们的测试运行足够时间长。

参数设定:


1、若TPS有预期值,
设置定时器Throughput的值(与TPS接近),线程数随机设置一个比较小的值,开始启动压测,观察error比例(如果很小,符合要求,否则需要减小线程数),观察time,如果time大于线程数/TPS,则需要适当增加线程数,直至time大约等于线程数/TPS;此时如果error很小,则说明接口可以承受预期压力;

2、若TPS没有预期值
a) 设置定时器Throughput的值,线程数依次增加(比如先设置100,再200,再500,再1000),按照不同的线程数分别压测,当error比例开始明显增加,停止压测,记录此时线程数x。

b) 再次修改线程数进行压测,此次线程数的值不要超过x,等比例增加线程数(比如100,再200,再300....),按照不同的线程数分别压测,并记录不同线程数下的time,分别算得不同线程数下的TPS(TPS整体趋势应该是先增长后下降,有一个大致的峰值),找到最大的TPS的值,即得到接口最大的TPS。

建议:

1.建议定时器添加在线程组最后一个请求下;

2.建议选择当前线程组中的所有活动线程;

3.当目标吞吐量设置为你,模式选择当前线程组中的所有活动线程 ,若固定吞吐量控制器放在,代表该请求的tpm为你,若放在事务控制器下,且事务控制器下的请求有3个,那么每个请求的tpm为n/3

理解可参考:

https://blog.csdn.net/u011197146/article/details/106522711?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&utm_relevant_index=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jmeter-定时器 的相关文章

随机推荐

  • Ant Design Pro学习记录—ProTable的使用(一)

    目录 一 关于ProTable 二 使用步骤 1 新建页面 2 修改接口 3 接口调用 4 数据显示和检索 1 不同类型内容显示 2 列表检索 3 列表内容样式设置 5 其它 1 render的简单使用 2 图片点击预览 3 翻页 总结 前
  • RemoveAt删除的问题

    DateTime nowTime DateTime Now for int i listData Count 1 i gt 0 i 倒叙删除 因为每次删除list的下标号会改变 倒叙就不存在这个问题了 if IsBetweenTime no
  • [PyTorch]如何从PyTorch中获取过程特征图

    一 获取Tensor 神经网络在运算过程中实际上是以Tensor为格式进行计算的 我们只需稍稍改动一下forward函数即可从运算过程中抓到Tensor 代码如下 base feature self extractor forward x
  • 阿里云对象存储OSS-断点续传

    文章目录 阿里云对象存储OSS 断点续传 什么是断点续传 注意实现 代码实现 阿里云对象存储OSS 断点续传 什么是断点续传 在无线网络下 上传比较大的文件持续时间长 可能会遇到因为网络条件差 用户切换网络等原因导致上传中途失败 整个文件需
  • 蓝桥杯真题 左儿子右兄弟(图解、代码详解)

    题目描述 对于一棵多叉树 我们可以通过 左孩子右兄弟 表示法 将其转化成一棵二叉树 如果我们认为每个结点的子结点是无序的 那么得到的二叉树可能不唯一 换句话说 每个结点可以选任意子结点作为左孩子 并按任意顺序连接右兄弟 给定一棵包含N 个结
  • 基于用户历史位置的用户相似度度量

    本文并非博主原创 是由博主翻译 并删减部分类容 原文信息如下 Mining User Similarity Based on Location History Quannan Li1 2 Yu Zheng2 Xing Xie2 Yukun
  • SQL查询数据-基本查询、条件查询、投影查询、排序、分页查询

    在关系数据库中 最常用的操作就是查询 基本查询 要查询数据库表的数据 我们使用如下的SQL语句 SELECT FROM lt 表名 gt 假设表名是students 要查询students表的所有行 使用SELECT FROM studen
  • 魔方机器人设计中的问题

    1 每个面的基块有时候识别不出来 表现为某个基色块的中心点坐标为零 颜色识别为黑色 有时候能识别出来 这样的话 将识别的基色块的颜色赋值给数组就比较麻烦 问题的解决主要是调整摄像头到魔方的距离 实验采用的是Philips SPC900NC摄
  • vue中怎么使用watch同时监听data中两个数据变化

    在 Vue 中使用 watch 可以帮助我们监听一个组件的数据变化 我们可以这样监听两个数据的变化 watch data1 function newVal oldVal 监听到 data1 变化时执行的函数 data2 function n
  • 浮点数在内存中的存储

    浮点数在内存中的存储详解 我们知道 计算机内部实际上只能存储或识别二进制 在计算机中 我们日常所使用的文档 图片 数字等 在储存时 实际上都要以二进制的形式存放在内存或硬盘中 内存或硬盘就好像是一个被划分为许多小格子的容器 其中每个小格子都
  • c语言------------数组

    最大公约数 最小公倍数 include stdio h void main int m n min i max scanf d d m n min m gt n n m min m if m gt n min n for i min i g
  • WebStorm-2021.1.1下载及安装

    文章目录 一 WebStorm下载 1 WebStorm下载地址 https www jetbrains com webstorm 二 WebStorm安装 1 双击安装包 2 Next 3 选择安装路径 Next 4 选择对应的电脑位数
  • GUI (图形界面)程序原理分析

    1 命令行应用程序 命令行应用程序的特点 是一种基于顺序执行结构的可执行程序 程序执行过程中不需要与用户产生交互 程序执行后给出最终的运行结果 gcc a c b c c c 编译过程中不产生用户交互 编译结束后或者生成可执行程序或者给出错
  • Visual Studio 2010——C#状态栏控件的使用

    实验环境 Windows XP Visual Studio 2010 Ultimate 1 创建项目 文件 gt gt 新建 gt gt 项目 选中 Windows窗体应用程序 如下图所示 2 点击菜单栏的 视图 依次找到 解决方案资源管理
  • MySQL中no action和restrict的区别

    在MySQL中 如果两个表存在主外关系 则有五种引用操作 分别是 cascade no action restrict set null和set default 有很多人对no action的restrict区别搞不清楚 其实在MySQL中
  • SQL使用技巧(3.1)递归层次查询Postgresql

    专题 SQL使用技巧 实践是检验SQL函数的唯一标准 场景描述 一 递归方法 WITH RECURSIVE 1 1创建表和数据 1 2构建递归查询 二 存储过程传参递归查询 三 帆软Report配置查询界面 3 1FineReport 连接
  • 【c程序】expected identifier before numeric constant错误

    在linux开发中 出现类似error expected identifier before numeric constant错误 原因 定义的enum结构体与其它处的宏定义有冲突 举例说明 在文件a h中 define TRUE 1 在文
  • 最新openCV-Python安装教程(opencv-python版本4.4.0, Python版本: 3.9)

    本文是最新的opencv python 安装教程 以前的一键安装 pip install opencv python 在新版本上并不能使用 本文会按照4步详细的介绍 opencv python 版本 4 4 0 Python 版本 3 9
  • 数据湖架构之Hudi编译篇

    前言 说起编译hudi 从第一遍过之后 再回过头来看 发现就是第一遍不熟悉 出现的一切问题可以总结为maven仓库没配置好 一开始我只是配置了阿里云仓库 但是后面不断报错 然后百度谷歌找原因 再调整配置 再编译 最后就成功了 所以整体来说编
  • jmeter-定时器

    目录 1 固定定时器 2 统一随机定时器 3 同步定时器 4 固定吞吐量定时器 一 定时器的使用目的 使用 定时器 的主要目的是模拟用户的 思考时间 在负载测试领域 思考时间 代表模拟真实用户行为 就是人们在与web应用程序的交互等待时间