文章目录
前言
Apache JMeter 是一款开源的性能测试工具,主要用于对 Web 应用、API 接口、数据库等进行负载和压力测试。本指南将详细介绍如何使用 JMeter 进行压测。

技术积累
JMeter 简介
什么是 JMeter Apache JMeter 是由 Apache 开发的 Java 桌面应用程序,支持多线程测试,可以模拟高并发用户访问系统的行为。
适用场景
HTTP/HTTPS 请求性能测试
Web Services(SOAP/REST)测试
数据库性能测试(通过 JDBC)
FTP、LDAP、SMTP、POP3、IMAP 等协议测试
分布式测试(跨机器执行)
JMeter 核心组件

安装与配置
安装前提
安装 JDK 1.8 或更高版本
设置 JAVA_HOME 环境变量
下载与启动
官网地址:https://jmeter.apache.org
解压下载包后,进入 bin 目录:
Windows:运行 jmeter.bat
Linux/Mac:运行 sh jmeter.sh
线程组压测
该方式直接创建 线程组,然后把请求,请求头,报告,TPS压测图等都创建出来,用来可视化观察压测过程数据,吞吐量的值,可以在聚合报告查看。这种方法比较常用,在线程组中进行设置线程数,每秒执行,那么这个线程数一般就是业务要求的并发用户数,也就是同一时刻,能支持多少用户请求,基于的是系统的用户量,业务的要求,来指定具体的数值。
逐步加压压测
这种方式适合找到系统的最大并发量,需要我们先做负载测试(逐步增加并发用户数,找出被测系统的最大可接受的并发用户数,并考察系统性能的变化),通过逐步加压找到最大并发用户数。
最大并发用户数评判标准:
1.出现连续报错 2.平均响应时间超过3秒(3秒是行业标准) 3.tps出现下降趋势
安装相应jmeter 插件
安装jmeter 管理插件:下载地址:https://jmeter-plugins.org/install/Install/,将下载下来的jar包放到jmeter文件夹下的lib/ext路径下,然后重启jmeter。
打开 选项 --> Plugins Manager --> 在Available Plugins中找到Custom Thread Groups,jpgc - Standard Set 安装这两个插件,然后点击右下角图标进行安装重启,安装完成后就可以在Installer Plugins列表中看到,那么接下来就可以执行创建一个线程梯式增加组了。
创建测试计划
-
右键 测试计划 --> 添加 --> 线程
选择"jp@gc - Stepping Thread Group",插件
默认设定值如下:
jp@gc- Stepping Thread Group填写数据,场景为在5秒内增加10个并发用户数,并运行30秒,再继续在5秒内增加10个并发用户数,重复循环,直至并发用户数达到200个后运行脚本60秒。然后在每1秒内减少5个并发用户数,直到减为0,结束脚本的运行
-
添加 取样器 --> HTTP请求 --> 创建请求
这里比较简单,类似Postman
3.添加 配置元件 --> HTTP信息头管理器
4.添加 监听器
查看结果树、汇总报告、聚合报告、汇总图、TPS(每秒事务数)、RT(响应时间)、AT(活动线程)
聚合报告可以填写数据保存文件和位置,方便到处HTML报表
吞吐量可以在聚合报告看到,具体的测试图,可以看看TPS
5.分析压测结果
TPS: 这里接口在整个压测阶段并未出现异常,但是在线程数增加到200个时候还是能够保持350TPS,初步估计该接口TPS为350。
11分多钟时,接口的响应时间也是比较可观 每秒请求是600ms左右,后续增加线程数应该还会增加,但是吞吐量应该增加不会太明显。也可以增加线程数继续压测,提升准确率。
![汇总报告,吞吐量在335,这是一个平均值,整个测试下来的均值
6...结论
基于上面的测试过程,可以得出一个大致的结论,这个接口的并发量大概是350左右。当然,本次压测是在windows服务器上进行,如果其他服务器可能会有细微差异。在实际的压测过程中,应该多次压测和分析,在保证没有异常和响应时间符合标准的情况下得出结论。
生成压测HTML
由于我们在创建测试计划时候引入了聚合报告,并且填入了数据保存文件名称,现在可以直接进行数据导出HTML。
1.导航栏 工具 --> Generate-HTML report
2.选择数据文件及报告保存路径
3.生成HTML报告
直接点击生成报告按钮,提示生成完成即可。随即可进入报告保存目录查看HTML报告:
点击index.html可以进入查看报告
总结
Apache JMeter 压测接口还是比较简单的,主要分为线程组压测和逐步加压压测。如果我们需要验证接口的最大并发量推荐选择逐步加压压测,这样对接口的并发量会有个明确的结论。当前,如果能够预估接口并发量则可以直接使用线程组以最大并发量压测,这样会简单很多。