Jmeter 压测实战保姆级入门教程

news2024/9/9 1:08:31

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.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/1238829.html

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

相关文章

探秘互联网医院系统的技术内幕:代码解析与创新

随着科技的飞速发展,互联网医院系统正日益改变着传统医疗服务的面貌。这些系统的背后,隐藏着精密而创新的技术。本文将深入研究互联网医院系统的技术内幕,透过代码解析,揭示这些系统如何实现医疗服务数字化的伟大使命。 1. 实时…

优质猫罐头有哪些品牌?分享5款宠物店自用值得推荐的猫罐头!

不知不觉已经开宠物店7年啦,店里的猫猫大大小小也算是尝试过很多品牌的猫罐头了。优质猫罐头有哪些品牌?在猫罐头的选购上一开始我也是踩了很多坑,各种踩雷。我深知猫罐头的各种门道,新手一不小心就会着道了。 优质猫罐头有哪些品…

涉密人员离职怎么做好安全管理?

在信息安全领域,涉密人员的离职安全管理具有极其重要的意义。一旦涉密人员离职,可能会对单位的信息安全造成威胁,因此必须采取有效的措施来确保涉密人员离职后的信息安全。 一、涉密人员离职安全管理的现状 目前,许多单位在涉密人…

云流量回溯主要作用是哪些?

云流量回溯,作为网络运营中的一项关键技术,具有重要的作用,为企业提供了更加精准、高效的网络管理手段。本文将探讨云流量回溯的主要作用以及其在网络优化中的关键性。 1. 实时监测与分析:云流量回溯通过实时监测网络流量&#xf…

力扣OJ题讲解——循环队列

今天我们一起来做一道关于队列的OJ题目,这是力扣题目622题,点击题目链接可以直接跳转,https://leetcode.cn/problems/design-circular-queue/ 首先,我们看到要求,需要我们实现哪些功能? 我们需要设置队列长…

ubuntu上编译proj-7.1.0出现tiffio.h找不到的错误

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 在编译ubuntu上编译proj-7.1.0出现下面错误: grids.cpp:41:10: fatal error: tiffio.h: No such file or directory41 | #include "tif…

在iPad pro上安装VSCode,秒变生产力工具提升编程工作效率!

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、Cpolar杂谈 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 本地环境配置二. 内网穿透2.1 安装cpolar内网穿透(支持一键自动安装脚本)2.…

地磁传感器在城市交通智能监控系统的作用

地磁传感器的功能作用 地磁传感器的功能是相当强大的:当驾驶员把车辆停在车位上,地磁传感器能自动感应车辆的到来并开始计时;待车辆要离开时,传感器会自动把停车时间传送到中继站进行计费。因此,解决停车收费效率低下…

赛轮集团SAILUN方程式赛车轮胎震撼登场,开启新篇章

11月初,在厦门国际赛车场,SAILUN方程式赛车轮胎展现出令人瞩目的实力,成功完成了首次震撼亮相。这一引人注目的表现为未来的赛车轮胎技术发展打开了崭新的一页。 在这次首次亮相的测试中,职业车手巧妙操控着SAILUN方程式赛车轮胎&…

吴恩达《机器学习》9-7-9-8:综合起来、自主驾驶

在神经网络的使用过程中,需要经历一系列步骤,从网络结构的选择到训练过程的实施。以下是使用神经网络时的主要步骤的小结: 一、网络结构的选择 输入层: 第一步是选择网络结构,即确定神经网络的层数以及每层的单元数。…

springboot宠物领养系统-计算机毕设 附源码 44261

springboot宠物领养系统 摘 要 网络发布信息有其突出的优点,即信息量大,资源丰富,更新速度快等,很符合人们希望以捷、便利的方式获得最多最有效信息的要求。本系统就是一个网上宠物领养系统,为宠物爱好者提供一个信息…

永恒之蓝漏洞复现

https://blog.csdn.net/qq_44159028/article/details/104044002 跟着这篇复现的 改造“永恒之蓝”制作了wannacry勒索病毒,使全世界大范围内遭受了该勒索病毒 影响版本 目前已知受影响的 Windows 版本包括但不限于:WindowsNT,Windows2000、W…

Linux-进程替换

进程程序替换目的 首先我们要知道,创建子进程的目的是什么? 想让子进程执行父进程代码的一部分想让子进程执行一个全新的代码 我们之前所写的程序,子进程都是在执行父进程代码的一部分,而要想让子进程执行全新的代码&#xff0…

银行数字化转型导师坚鹏:BLM银行数字化转型战略培训圆满结束

在数字化转型背景下,中国金融出版社金融文化研训院为了落实监管政策《关于银行业保险业数字化转型的指导意见》,充分认识到学习银行银行数字化转型战略的价值和重要性,特别举办《2023年金融机构数字化转型及数字化风控与运营管理研讨班》。为…

【wireshark】基础学习

TOC 查询tcp tcp 查询tcp握手请求的代码 tcp.flags.ack 0 确定tcp握手成功的代码 tcp.flags.ack 1 确定tcp连接请求的代码 tcp.flags.ack 0 and tcp.flags.syn 1 3次握手后确定发送成功的查询 tcp.flags.fin 1 查询某IP对外发送的数据 ip.src_host 192.168.73.134 查询某…

腾讯三季度财报解读:AI大模型成下个十年的新支点?

2023年,腾讯重回高增长轨道。 近日,腾讯披露了2023年第三季度财报,营收1546.25亿元,同比增长10%;非国际通用会计准则下的净利润为449.21亿元,同比增长39%。此前两个季度,腾讯的营收、净利润增速…

数据结构与算法【红黑树】的Java实现+图解

前言 建议先阅读普通二叉搜索树与平衡二叉搜索树的文章。理解一些基本的二叉树知识数据结构与算法【二叉搜索树】Java实现-CSDN博客 介绍 红黑树也是一种自平衡的二叉搜索树,较之 AVL,插入和删除时旋转次数更少。 首先介绍代码实现会用到的概念 兄弟…

【必读】从零开始,一步步教你安装nginx,搭建个人博客网站!

nginx搭建个人网站 Nginx是一款轻量级Web服务器、反向代理服务器以及电子邮件代理服务器,并且具有高并发连接处理能力和低内存消耗的特点。它也可以用于负载均衡和缓存控制等功能。 功能: 静态网站服务器:Nginx可以用来作为静态网站服务器&am…

Linux 是否被过誉了?

Linux 是否被过誉了? 有些人眼里,电脑这种东西就应该是华丽丽的桌面,手握鼠标戳戳按钮,键盘只为偶尔打打字,仿佛windows式的桌面形式才是理所应当,GUI才是理所应当,x86才是理所应当&#xff0c…

Python游戏库pygame全方位使用指南,从零开始游戏开发!

文章目录 前言1.初始化化程序2.创建Surface对象3.事件监听4.游戏循环 二.Pygame Display显示模块详解1.将Surface对象粘贴至主窗口上2.设置窗口主窗口3.填充主窗口背景,参数值RGB4.设置窗口标题5.更新屏幕内容6.pygame.display其他方法 三.Pygame Surface创建图像1.…