测试动态 / 测试知识 / JMeter实操教程-接口与高并发压测落地方法
JMeter实操教程-接口与高并发压测落地方法
2026-08-14 作者:cwb 浏览次数:7

JMeter环境搭建 - 接口测试脚本编写 - 高并发压测配置 - 结果分析与优化落地的全流程


一、环境准备

1.安装 JDK

JMeter 依赖 Java 运行环境,需要安装 JDK 8 或更高版本。安装后执行 java -version 确定版本号输出如17.0.9或类似信息。


2.下载并安装 JMeter

访问官网下载最新稳定版(截至 2026 年为 JMeter 5.6.3)。

Linux/macOS:解压后进入 bin 目录,执行 ./jmeter.sh 启动。

Windows:进入 bin 目录,双击 jmeter.bat 启动。

建议将 bin 目录添加到系统 PATH 环境变量,方便直接在命令行调用。


3.概念

JMeter最基础的四件套:

测试计划:整个测试的根容器。

线程组:模拟并发用户,控制线程数、启动速度、循环次数。

取样器(Sampler) :发送具体请求,最常用的是 HTTP 请求。

监听器(Listener) :收集和展示测试结果。

此外还有配置元件CSV 数据文件、HTTP 头管理器和断言。

二、接口测试实操

1.创建测试计划和线程组

右键点击测试计划 - 添加 - 线程(用户) - 线程组。

线程组参数:

线程数:模拟的并发用户数量。接口调试时设为1,压测时根据目的设置(如200)。

Ramp-Up 时间(秒):启动所有线程所用的总时长。接口调试设为 1 秒,压测时可根据线程数调整(如 200 线程用 20 秒),避免瞬间启动压垮系统。

循环次数:每个线程执行请求的次数。调试时设为 1,压测时可设为多次或勾选永远。

调度器:勾选后可设置测试总不断时间,控制测试何时自动停止。

原则:Ramp-Up 时间 ≈ 线程数 / 预期每秒启动线程数,让压力平滑上升。


2.添加 HTTP 请求

右键线程组 - 添加 -取样器 - HTTP 请求。以 GET 请求为例,填写协议(http/https)、服务器名称或 IP、方法(GET)、途径(如 /users/123)。

如果是 POST 请求,需在 Body 中传入 JSON 参数,并同时在“HTTP 信息头管理器”中设置 Content-Type: application/json。


3.添加调试用监听器

右键线程组 - 添加 - 监听器 - 查看结果树。调试阶段用来看请求详情和响应内容,排查问题。


4.添加响应断言

右键 HTTP 请求 -添加 - 断言 -响应断言。配置时选择测试字段为响应文本,方式一致规则选包括,然后填写期望出现在响应中的重点字(如 "id": 123),用于测试请求是不是成功。


三、高并发压测配置

1.线程组高并发参数

以模拟 200 个用户并发登录为例,推荐配置:

线程数 = 200

Ramp-Up 时间 = 20 秒(让用户逐步登录)

循环次数 = 5(每个用户执行 5 次登录,总请求 1000 次)

勾选调度器,设置不断时间为 60 秒,跑满后自动停止。


2.添加聚合报告

右键线程组 - 添加 - 监听器 - 聚合报告。这个监听器展示性能标准:

平均响应时间:所有请求的平均耗时。

百分位数(90%/95%/99% 线):更能反映极端情况下的响应时间。

错误率:失败请求占总请求的百分比。

吞吐量(TPS/QPS):系统每秒处理的事务数。


3.阶梯式加压

使用Concurrency Thread Group插件实现阶梯加压,如:

目的并发500

起步50

步长50(每步增加50个用户)

每步不断时间30秒

保持运行5分钟

这种方式能逐步增加压力,观察系统在不同并发量下的表现,准确定位性能拐点。


4.控制TPS

如果需要限制每秒请求数(如目的 TPS=100),可以添加Constant Throughput Timer(常量吞吐量定时器),配置目的吞吐量(以分钟为单位,如 100 请求/分钟)。


四、进阶

1.参数化CSV数据驱动

当需要模拟多个不同用户时,使用CSV数据文件:

准备 users.csv

添加 CSV Data Set Config:右键线程组 - 添加 - 配置元件 - CSV Data Set Config,指定文件途径,并设置变量名列表(如 username,password)。

在 HTTP 请求的参数或 Body 中引用变量,写法为 ${username}、${password}。


2.接口关联Token 传递

典型场景:登录后获取 token,传给后续需要鉴权的接口。

在登录请求上添加后置处理器 - JSON 提取器,设置引用名称为 access_token,JSON 表达式为 $.data.token(根据实际响应结构调整),一致数字设为 1。

在后续请求的 HTTP 信息头管理器中添加头部:Authorization: Bearer ${access_token},实现 token 传递。


3.事务控制器统计完整业务流程TPS

如果要统计登录-查商品-下单-支付整条链路的 TPS,可将这些请求放入一个事务控制器。

右键线程组-添加 -思路控制器-事务控制器,并勾选将取样器结果作为子样本,这样聚合报告中将显示整体事务的耗时和吞吐量。


4.模拟思考时间

添加固定定时器模拟用户操作间隔:右键线程组 - 添加 -定时器 -固定定时器,设置延迟时间(如 2000 毫秒),代表用户等待2秒后再发起下一操作。


五、执行压测和生成报告

1.原则

GUI 界面只用于编写和调试脚本。大并发压测必须使用命令行非 GUI 方式,否则界面渲染和监听器会消耗大量资源,导致测试结果不准。


2.命令行执行

执行命令:


text

jmeter -n -t your_test_plan.jmx -l result.jtl -e -o ./report_folder


参数说明:

-n:非 GUI 方式。

-t:指定 JMX 脚本文件。

-l:保存原始结果到 JTL 文件。


-e -o:生成 HTML 报告到指定文件夹。


3.JVM优化

修改 bin/jmeter(Linux/macOS)或 bin/jmeter.bat(Windows)中的 JVM 参数,如:


-Xms2g -Xmx4g -XX:+UseG1GC

-Xms:初始堆内存。

-Xmx:最大堆内存。

-XX:+UseG1GC:启用 G1 垃圾回收器,减少 GC 停顿。


4.系统方面优化

高并发压测时,需调整操作系统限制:

修改 /etc/security/limits.conf,提升最大打开文件数和进程数,避免出现Too many open files错误。

根据客户端机器配置,适当调整TCP参数(如端口范围、time_wait 回收)。


六、结果分析

1.标准解读

吞吐量(TPS):理想状态下应随线程数增加而线性增长,当达到短板后会趋于平稳甚至下降。

平均响应时间:需结合业务要求决定(如登录接口 < 500ms)。

90%/99% 响应时间:比平均值更能反映极端情况下的用户体验。

错误率:一般要求低于 0.1%,如果过高需排查服务端异常。


2.异常排查

如果平均响应时间尚可但 90% 线明显偏高,说明存在“长尾请求”,可能由数据库慢查询或锁竞争引起。

如果响应时间随测试时长不断上升,可能是内存泄漏或连接池未释放。

出现 500 错误,需查看服务端日志,常见原因有代码异常、数据库连接失败等。

出现 429 错误,表示触发了限流,需确定限流阈值是不是合理。

超时错误一般和线程池满或请求队列过长有关。

如果 TPS 低且 CPU 利用率也低,说明系统可能在等待外部资源(如数据库、下游服务)或存在不合理的 sleep/等待思路。


3.定位思路

CPU 利用率过高 - 排查代码效率、死循环、大量计算。

内存不断飙升-检查是不是内存泄漏(如缓存未清理)、大对象占用。

数据库响应缓慢-检查 SQL 执行计划、索引是不是有效、连接池大小。

网络 I/O 短板-检查带宽、网卡队列、防火墙规则。


七、避坑

不要在GUI下做大并发压测:GUI 和大量监听器会消耗客户端内存,导致结果偏差。必须用命令行非GUI方式。

合理设置 Ramp-Up 时间:不要把所有线程瞬间启动,应让压力逐渐增加,或采用阶梯式加压。

正式压测时禁用过多监听器:查看结果树等监听器在大并发下会占用大量内存,调试完即可移除或禁用,仅保留聚合报告等必要监听器。

必须添加响应断言:不证实响应正确性,可能会统计大量错误请求,得到虚假的高TPS。

不要只看平均值:平均值容易掩盖慢请求,必须重视 90%、99% 线等百分位标准。


文章标签: 软件测试 测试工具 并发压力测试
热门标签 换一换
第三方软件国产化测试 第三方信创测试 CNAS软件测评报告 CMA软件测评报告 首版次软件认定 软件结题验收 软件测试报告书 软件质量检测 数据库测试 H5应用测试 软件质检机构 第三方质检机构 第三方权威质检机构 信创测评机构 信息技术应用创新测评机构 信创测试 软件信创测试 软件系统第三方测试 软件系统测试 软件测试标准 工业软件测试 软件应用性能测试 应用性能测试 可用性测试 软件可用性测试 软件可靠性测试 可靠性测试 系统应用测试 软件系统应用测试 软件应用测试 软件负载测试 API自动化测试 软件结题测试 软件结题测试报告 软件登记测试 软件登记测试报告 软件测试中心 第三方软件测试中心 应用测试 第三方应用测试 软件测试需求 软件检测报告定制 软件测试外包公司 第三方软件检测报告厂家 CMA资质 软件产品登记测试 软件产品登记 软件登记 CNAS资质 cma检测范围 cma检测报告 软件评审 软件项目评审 软件项目测试报告书 软件项目验收 软件质量测试报告书 软件项目验收测试 软件验收测试 软件测试机构 软件检验 软件检验检测 WEB应用测试 API接口测试 接口性能测试 第三方系统测试 第三方网站系统测试 数据库系统检测 第三方数据库检测 第三方数据库系统检测 第三方软件评估 课题认证 第三方课题认证 小程序测试 app测试 区块链业务逻辑 智能合约代码安全 区块链 区块链智能合约 软件数据库测试 第三方数据库测试 第三方软件数据库测试 软件第三方测试 软件第三方测试方案 软件测试报告内容 网站测试报告 网站测试总结报告 信息系统测试报告 信息系统评估报告 信息系统测评 语言模型安全 语言模型测试 软件报告书 软件测评报告书 第三方软件测评报告 检测报告厂家 软件检测报告厂家 第三方网站检测 第三方网站测评 第三方网站测试 检测报告 软件检测流程 软件检测报告 第三方软件检测 第三方软件检测机构 第三方检测机构 软件产品确认测试 软件功能性测试 功能性测试 软件崩溃 稳定性测试 API测试 API安全测试 网站测试测评 敏感数据泄露测试 敏感数据泄露 敏感数据泄露测试防护 课题软件交付 科研经费申请 软件网站系统竞赛 竞赛CMA资质补办通道 中学生软件网站系统CMA资质 大学生软件网站系统CMA资质 科研软件课题cma检测报告 科研软件课题cma检测 国家级科研软件CMA检测 科研软件课题 国家级科研软件 web测评 网站测试 网站测评 第三方软件验收公司 第三方软件验收 软件测试选题 软件测试课题是什么 软件测试课题研究报告 软件科研项目测评报告 软件科研项目测评内容 软件科研项目测评 长沙第三方软件测评中心 长沙第三方软件测评公司 长沙第三方软件测评机构 软件科研结项强制清单 软件课题验收 软件申报课题 数据脱敏 数据脱敏传输规范 远程测试实操指南 远程测试 易用性专业测试 软件易用性 政府企业软件采购验收 OA系统CMA软件测评 ERP系统CMA软件测评 CMA检测报告的法律价值 代码原创性 软件著作登记 软件著作权登记 教育APP备案 教育APP 信息化软件项目测评 信息化软件项目 校园软件项目验收标准 智慧软件项目 智慧校园软件项目 CSRF漏洞自动化测试 漏洞自动化测试 CSRF漏洞 反序列化漏洞测试 反序列化漏洞原理 反序列化漏洞 命令执行 命令注入 漏洞检测 文件上传漏洞 身份验证 出具CMA测试报告 cma资质认证 软件验收流程 软件招标文件 软件开发招标 卓码软件测评 WEB安全测试 漏洞挖掘 身份验证漏洞 测评网站并发压力 测评门户网站 Web软件测评 XSS跨站脚本 XSS跨站 C/S软件测评 B/S软件测评 渗透测试 网站安全 网络安全 WEB安全 并发压力测试 常见系统验收单 CRM系统验收 ERP系统验收 OA系统验收 软件项目招投 软件项目 软件投标 软件招标 软件验收 App兼容性测试 CNAS软件检测 CNAS软件检测资质 软件检测 软件检测排名 软件检测机构排名 Web安全测试 Web安全 Web兼容性测试 兼容性测试 web测试 黑盒测试 白盒测试 负载测试 软件易用性测试 软件测试用例 软件性能测试 科技项目验收测试 首版次软件 软件鉴定测试 软件渗透测试 软件安全测试 第三方软件测试报告 软件第三方测试报告 第三方软件测评机构 湖南软件测评公司 软件测评中心 软件第三方测试机构 软件安全测试报告 第三方软件测试公司 第三方软件测试机构 CMA软件测试 CNAS软件测试 第三方软件测试 移动app测试 软件确认测试 软件测评 第三方软件测评 软件测试公司 软件测试报告 跨浏览器测试 软件更新 行业资讯 软件测评机构 大数据测试 测试环境 网站优化 功能测试 APP测试 软件兼容测试 安全测评 第三方测试 测试工具 软件测试 验收测试 系统测试 测试外包 压力测试 测试平台 bug管理 性能测试 测试报告 测试框架 CNAS认可 CMA认证 自动化测试
专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568