Jmeter 压测保姆级入门教程

news2024/9/30 19:34:30

1、Jmeter本地安装

1.1、下载安装

软件下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/
选择一个压缩包下载即可
在这里插入图片描述
然后解压缩后进入bin目录直接执行命令jmeter即可启动

在这里插入图片描述

1.2 修改语言

默认是英文的,修改中文,点击选项-》选择语言-》简体中文
在这里插入图片描述

1.3 必备插件安装

jmeter内置的常用的插件不是很多,如果要额外安装其他插件需要先下载一个插件安装工具的jar包然后放到jmeter的目录下才能使用插件安装工具的功能。

  1. 插件安装工具下载地址

在这里插入图片描述
2) 下载jar包之后放到 jmeter的 /lib/ext 目录下,重启Jmeter即可。

3 打开插件管理。 选项-》 插件管理器
在这里插入图片描述

  1. 点击可用插件tab,然后勾选安装即可
    在这里插入图片描述

推荐勾选: 带jpgc相关的插件,可以做梯度增压

1.4 修改Jmeter的堆内存

由于压测是通过Jmeter这个Java程序去跑的,所以压测的性能和能开启的线程数量都与这个程序本身运行的环境以及配置有关。 一般Jmeter部署在服务器那边性能会更强。

修改jmeter的 /bin/jmeter 文件 (mac环境),如果是window修改 jmeter.bat 。 修改下图的这一行就是调整堆内存信息

${HEAP:=“-Xms1g -Xmx8g -XX:MaxMetaspaceSize=656m”}

在这里插入图片描述
验证是否修改成功,重启使用jconsole工具连接Jmeter进程查看jvm信息即可看到是否修改成功。 或者使用jps命令查看进程号然后再jmap命令查看堆内存分配情况。

在这里插入图片描述

2、 Jmeter操作说明

2.1、测试计划

默认打开的界面如下, 一份测试计划就是一份jmx文件,点击保存就会弹出保存地址。 测试计划就是包含此次做压测的所有信息。 支持导入导出。
在这里插入图片描述

2.2 测试计划界面介绍

异常信息

  • 右上角那个小三角可以看到jemter的执行信息,如果你的压测执行不了可以去里面看看一般是报错了

用户自定义变量

  • 可以在这里配置压测的全局变量,这样我们在使用的时候就不用传具体的值,传变量的值即可。 这样以后要修改的话只需要修改这里的变量值就可以了就不用到处都修改了。
  • 比如我们压测的接口的域名肯定是都一样所以一般会提取出来做全局变量。比如下面配置全局变量域名host, 然后使用的时候就直接配 ${host}即可。
    在这里插入图片描述

2.3、配置元件

默认支持的配置元件列表,主要作用就是配置我们压测接口的一些参数配置
在这里插入图片描述

2.3.1、Http请求默认值

操作: 右键点击测试计划-》 添加-》 配置元件-》 Http请求默认值组件

作用

  • 一般压测的接口的很多请求参数可能是一致的。 所以这里可以设置压测接口时的默认请求参数。 这样就不用每次配压测接口都去配置,默认会带上这里配置的请求参数。

在这里插入图片描述

比如下图配置默认的http协议,以及默认的域名。 这里的域名配置就使用我们前面配置的全局变量 ${host}
在这里插入图片描述

2.3.2、HTTP信息头管理器

操作: 右键点击测试计划-》 添加-》 配置元件-》 HTTP信息头管理器

作用

  • Http请求默认值配置元件类似,都是配置压测接口的请求默认值。 不过这个元件就像其名字一样配置的是默认的Http请求头信息,这样压测接口就不用再配置Http请求头信息默认会带上
  • 比如我们可以配置常用的默认的请求头Content-TypeCookie 。 尤其是Cookie请求头 这样即使是登录接口也能进行调通。

在这里插入图片描述

2.3.3、CSV Data Set Config

操作: 右键点击测试计划-》 添加-》 配置元件-》 CSV Data Set Config

作用

  • 一般用于模拟生成不同的请求参数。 因为一般我们对一个接口进行压测真实的场景是请求参数是不同的

具体配置如下:

  • 主要是先配置一个csv文件的地址,然后指定列头变量字段名。 之后再配置压测接口的时候就可以把使用这些变量字段名。使用格式为: {变量名称}。 比如下面配置使用格式就是 {userName}.
  • 这样在请求压测接口的时候就会来随机读取这个csv文件的这个变量对应的列的某一个的值, 一般我们就是通过这个组件去模拟不同的请求参数。

在这里插入图片描述

2.4、线程组

线程组就是用来模拟并发的数量以及并发的行为。 比如你是要启动10个并发还是100个并发去压测接口就是通过这个组件。并且启动压测程序其实就是通过启动我们的线程组的执行压测。

自带带的线程组如下,其中带gc的使我们添加插件后才有的。 不同的线程组的区别就是设置的并发行为不同

  • 比如有些线程组是一股脑配10个并发然后一直执行10分钟。

  • 有些线程组是配置先启动1个并发,每过5秒后再启动10个并发,当到达100个并发后就执行10分钟。
    在这里插入图片描述

2.4.1、普通线程组

操作: 右键点击测试计划-》 添加-》 线程-》 线程组
作用

  • 下图就是我们配置一个线程组, 配置了20个并发,然后在5秒内启动完20个并发,当执行10000伺候就停止压测。
    在这里插入图片描述

具体该配置的并发行为可以用下图来形象的表示。 可以看到一开始是0个并发,然后随着时间增加不短增加并发,最终在第5秒达到最大并发20,然后就一直20个并发一直执行。
在这里插入图片描述

2.4.2、梯度线程组(Stepping Thread Group)

操作: 右键点击测试计划-》 添加-》 线程-》 jp@gc - Stepping Thread Group
作用

  • 与普通线程组的并发行为不同的是,这个线程组可以做到类似于先启动5个并发,然后隔10秒后再启动10个并发,当达到100个并发,持续执行30s,然后再每隔5秒降低20个并发这种更为详细的并发行为。 而普通线程组每次只能保持固定的并发数去跑, 我们只能不断修改这个固定的并发数去压测以求找到接口最大的吞吐量。 下图就形象的表示了这种驼峰式的并发行为

在这里插入图片描述

具体配置对应的语义和并发行为如下图所示:

  • this goup will start语义: 表示最多启动多大线程。对应图中的峰顶的值
  • first wait for语义: 从运行之后多长时间开始启动线程;若设置为60秒, 对应图中开头的底部横线。
  • then start语义: 表示第一次要启动几个线程。 对应图中第一个上升线。
  • next add语义 + threads every 语义: 表示每隔多少秒启动多少个线程。对应图中的上升梯度线。
  • using ramp-up 语义: 其中与普通线程组一样表示启动线程的时间。 对应图中的上升梯度线的斜度,越大越斜表示用的时间越久。
  • then hold load for语义: 表示达到最大线程后保持最大线程持续执行多久。 对应图中的峰顶的横线。
  • finally sotp + threads every语义: 达到峰顶后,表示每隔多少秒释放多个线程。 对应图中的下降梯度线。

2.5、取样器

如果说线程组就是我们Java的线程池,那么取样器就相当于我们线程池要执行的Runnable任务。比如我们要压测哪个接口就可以配置成取样器。

自带取样器如下

  • 操作: 右键线程组-》 添加-》取样器
  • 一般我们用的比较多就是Http请求取样器,用来压测接口。
    在这里插入图片描述

2.5.1、Http请求取样器

操作: 右键线程组-》 添加-》取样器-》 Http请求
作用: 主要就是用来配置Http接口的信息,包括请求域名,端口,接口路径、接口参数等等。 有了它就可以发起请求。

在这里插入图片描述

3、 实战案例

此处压测的接口代码逻辑: 模拟执行时间是500ms

    @GetMapping
    public String getA1(){
        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return "33";
    }

3.1、 压测接口Hello World

1、在测试计划下面添加线程组,设置100个并发,持续执行600秒。
在这里插入图片描述

2、添加压测的接口
添加http取样器,并且配置接口信息

在这里插入图片描述

3、添加接口执行结果监听器
操作: 右键线程组-》添加-》监听器-》查看结果树。
这样我们接口是否调通以及返回结果都可以看到
在这里插入图片描述

4、添加压测接口汇总报告
操作: 右键线程组-》添加-》监听器-》汇总报告。
这样看到这个线程组压测的统计报告,包括吞吐量TPS、响应时间、是否异常,网络请求量,执行次数。

在这里插入图片描述

5、添加吞吐量TPS实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Transactions per Second。
这样就可以监测吞吐量的实时变化情况。
在这里插入图片描述

5、添加响应时间实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Response Times Over Time
这样就可以监测接口响应时间的实时变化情况。

在这里插入图片描述

5、添加激活线程实时统计图(可忽略)
操作: 右键线程组-》添加-》监听器-》jp@gc - Active Threads Over Time
这样就可以监测线程组的并发行为,因为线程组的组件有很多,如果不是非常熟悉可能都不知道自己配置的线程组正在模拟什么样的并发行为。

在这里插入图片描述

7、启动线程组执行压测
操作: 右键线程组-》启动
原理: 线程组会去并发执行线程组下面配置的所有取样器(这里只添加了一个还可添加多个)

最后我们看下各部分压测结果:

1、首先是接口执行情况:

  • 都是绿色表示接口调通,并且右侧可看到接口响应结果。

在这里插入图片描述

2、看一下压测汇总报告统计

可以看到样本数就是总共请求的数量, 平均值就是平均响应时间(单位是毫秒)结果跟我们接口代码逻辑还是一致的,最小值和最大值也是接口响应时间。 异常率就是接口调不通(吞不下)的概率。 吞吐量就是每秒能处理168个请求。
在这里插入图片描述

3、看一下吞吐量变化情况
随着并发数增加,最终一直维持在180到200的吞吐量之间
在这里插入图片描述

3、看下响应时间的变化
基本维持在500ms左右
在这里插入图片描述

3.2、 模拟不同的请求参数

1、新建一个CSV文件,里面放我们不同的请求参数,比如内容为

userId,userName
1,	zhangShan
2,  liSi
3,  xaioming

2、新增CSV 数据文件设置组件
将我们刚才新增的csv文件路径配到这里,然后配置变量名,并且设置忽略首行(因为我们的csv文件内容首行不是请求参数)
在这里插入图片描述

3、在Http取样器里面直接使用变量即可。
请求参数要使用变量地方就用{}包起来就行。
原理就是请求的时候会去随机读取该文件的的这个字段的值从而达到模拟不同请求参数的效果
在这里插入图片描述

3.3、 如何请求要登录验证的接口

这个看你们的登录验证逻辑,假如我们的登录信息是放在cookies里面,那么我们就可以添加HTTP信息头管理器,然后在里面配置cookie请求头信息。只要把我们的登录cookies放进去就可以执行成功。

在这里插入图片描述

缺点就是cookie失效后每次要重新配置,具体还有其他更自动化的解决方法

3.4、 接口如何上传文件

接口配置那选择文件上传, 配置配置具体的配置路径即可。会去读取上传。 然后参数名称写死file就行。 然后MIME根据具体来。 一般是application/octet-stream 或者 multipart/form-data即可。
如果要模拟上传不同的文件,同上面模拟不同请求参数一样,这里用变量填充代表文件路径即可。
在这里插入图片描述

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

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

相关文章

使用原生js通过ajax实现服务器渲染的简单代码和个人改进

文章目录 前文提要代码实现主要参考服务器渲染实现逻辑网页呈现效果 代码分段讲解提要html的body部分css部分js部分xhr.open函数AJAX-onreadystatechange事件function函数简写方法附件功能:选中行 高亮 代码全文 前文提要 本文仅做个人学习记录,如有错误…

Apache服务Rwrite功能使用

Rewrite也称为规则重写,主要功能是实现浏览器访问时,URL的跳转。其正则表达式是基于Perl语言。要使用rewrite功能,Apache服务器需要添加rewrite模块。如果使用源码编译安装,–enable-rewrite。有了rewrite模块后,需要在…

怎么快速卸载office365

怎么快速卸载office365 根据官网提供的两种解决方案即点即用或MSIMicrosoft Store 根据官网提供的两种解决方案 官网地址:https://support.microsoft.com/zh-cn/office/%E4%BB%8E-pc-%E5%8D%B8%E8%BD%BD-office-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8#OfficeVersio…

visionOS空间计算实战开发教程Day 6 拖拽和点击

在之前的学习中我们在空间中添加了3D模型,但在初始摆放后就无法再对其进行移动或做出修改。本节我们在​​Day 5​​显示和隐藏的基础上让我们模型可以实现拖拽效果,同时对纯色的立方体实现点击随机换色的功能。 首先是入口文件,无需做出改变…

单元测试-java.lang.NullPointerException

报错信息 java.lang.NullPointerException 空指针异常 空对象引用 来源 对Controller层进行单元测试,解决完Spring上下文报错后继续报错。 解决 在测试方法执行前要为字段完成对象的注入,否则就报空指针异常。 测试例子 public class SysUserContr…

若依框架参数验证

文章目录 一、前端触发参数校验异常1.前端页面2.前端代码 二、后端触发参数校验异常1.前端页面2.后端报错 三、后端自定义参数验证1.添加注解2.触发后端校验 一、前端触发参数校验异常 1.前端页面 输入不符合校验规则的值来触发 2.前端代码 校验规则数组 表单的元素 修…

RTT打印在分区跳转后无法打印问题

场景: RTT打印仅占用JLINK的带宽,比串口传输更快更简洁,同时RTT可以使用jscope对代码里面的变量实时绘图显示波形,而采用串口打印波形无法实时打印。同时可以保存原始数据到本地进行分析,RTT在各方面完胜串口。 问题描…

【深度学习】Transformer简介

近年来,Transformer模型在自然语言处理(NLP)领域中横扫千军,以BERT、GPT为代表的模型屡屡屠榜,目前已经成为了该领域的标准模型。同时,在计算机视觉等领域中,Transformer模型也逐渐得到了重视&a…

CVE-2023-27524:Apache Superset未授权访问漏洞复现

文章目录 ​Apache Superset 未授权访问漏洞(CVE-2023-27524)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.漏洞复现 0x06 修复建议 ​Apache Superset 未授权访问漏洞(CVE-2023-27524)复现 0x01 前言 免责声明:请勿利用文…

【追求卓越04】数据结构--栈与队列

引导 今天我们开始学习栈与队列的内容,我觉得栈并不难,所以篇幅也就不会那么多了。在虚拟空间中,栈是用户空间中的一种数据结构,它主要用于保存局部变量。那么问题来了,为什么用栈来保存局部变量,不用别的数…

【数据结构(四)】前缀、中缀、后缀表达式(逆波兰表达式)和逆波兰计算器的代码实现(2)

文章目录 1. 前缀表达式(波兰表达式)1.1. 前缀表达式的计算机求值 2. 中缀表达式3. 后缀表达式(逆波兰表达式)3.1. 后缀表达式的计算机求值3.2. 逆波兰计算器的实现 4. 中缀表达式 转 后缀表达式4.1. 思路分析4.2. 代码实现 5. 逆波兰计算器的完整版 1. 前缀表达式(波兰表达式)…

如何搭建Zblog网站并通过内网穿透将个人博客发布到公网

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

紫光展锐V8821荣获“中国芯”重大创新突破产品奖

近日,“中国芯”优秀产品评选落下帷幕,紫光展锐首颗5G IoT-NTN卫星通信SoC芯片V8821凭借在卫星通信前沿领域的技术创新,从285家芯片企业、398款芯片产品中脱颖而出,荣获第十八届“中国芯”年度重大创新突破产品奖。 “中国芯”优…

SeaTunnel及SeaTunnel Web部署指南(小白版)

现在你能搜索到的SeaTunnel的安装。部署基本都有坑,官网的文档也是见到到相当于没有,基本很难找到一个适合新手小白第一次上手就能成功安装部署的版本,于是就有了这个部署指南的分享,小主已经把可能遇到的坑都填过了,希…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

2014年12月10日 Go生态洞察:Go 1.4版本发布

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Vue弹窗的使用与传值

使用element-UI中的Dialog 对话框 vue组件结合实现~~~~ 定义html <div click"MyAnalyze()">我的区划</div><el-dialog title"" :visible.sync"dialogBiomeVisible"><NationalBiome :closeValue"TypeBiome" cl…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 6

1、明明买了一个扫地机器人&#xff0c;可以通过以下指令控制机器人运动: F:向前走 10 个单位长度 L:原地左转 90 度 R:原地右转 90 度 机器人初始方向向右&#xff0c;需要按顺序执行以下那条指令&#xff0c;才能打扫完下图中的道路 A、F-L-F-R-F-F-R-F-L-F B、F-R-F-L-F-F…

重磅!2023年两院院士增选名单公布

中国科学院 关于公布2023年中国科学院院士增选当选院士名单的公告 根据《中国科学院院士章程》《中国科学院院士增选工作实施办法&#xff08;试行&#xff09;》等规定&#xff0c;2023年中国科学院选举产生了59名中国科学院院士。 现予公布。 中国科学院 2023年11月22日…

YOLOv7独家改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c …