在 CentOS 上使用 JMeter 进行 API 测试
一 环境准备
- 安装 Java 8(JMeter 5.x 要求 Java 8+):
- 安装命令:
sudo yum install -y java-1.8.0-openjdk-devel
- 可选:配置环境变量(/etc/profile)并
source /etc/profile
- 下载并安装 Apache JMeter(以 5.4.3 为例):
- 下载:
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
- 解压:
tar -zxvf apache-jmeter-5.4.3.tgz -C /usr/local/
- 配置环境变量:
JMETER_HOME=/usr/local/apache-jmeter-5.4.3,PATH=$JMETER_HOME/bin:$PATH,并 source /etc/profile
- 验证:
jmeter -v 应输出版本号
- 说明:JMeter 为 Java 应用,在 CentOS 7/8 均可按上述方式安装运行。
二 编写测试计划
- 线程组(Thread Group)
- 设置并发用户数(Number of Threads)、Ramp-Up Period(秒)、循环次数(Loop Count)或持续时间(Duration)
- 示例:并发 50、Ramp-Up 10 秒、循环 10000 次
- HTTP 请求(HTTP Request)
- 协议(http/https)、服务器名或 IP、端口、方法(GET/POST 等)、路径
- 参数:Query 参数或 Body Data/JSON;必要时在“HTTP Header Manager”设置 Content-Type: application/json
- 配置元件
- 使用 HTTP 请求默认值 统一管理协议、域名/IP、端口等公共配置
- 断言(Response Assertion)
- 对响应码、响应体内容进行校验(包含/匹配/相等/子串等模式)
- 监听器(Listener)
- 说明:上述元件是 JMeter 进行 API 功能与性能测试 的通用组合。
三 本地或非 GUI 模式运行与报告
- 非 GUI 执行(推荐在服务器上运行)
- 命令:
jmeter -n -t /path/to/test_plan.jmx -l /path/to/results.jtl -j /path/to/test.log
- 参数说明:
-n 非 GUI 模式
-t 指定测试脚本(.jmx)
-l 结果文件(.jtl)
-j 日志文件
- 生成 HTML 报告
- 方式一(运行后直接生成):
jmeter -n -t test.jmx -l test.jtl -e -o /path/to/report
- 方式二(基于已有 .jtl):
jmeter -g /path/to/results.jtl -o /path/to/report
- 报告目录中的 index.html 可用浏览器打开查看
- 说明:非 GUI 模式资源占用更低,适合在 CentOS 服务器执行与持续化运行。
四 在 Jenkins 中自动化执行与展示
- 安装与准备
- 在 CentOS 安装 Jenkins,并安装 Performance Plugin(用于展示 JMeter 报告)
- 任务配置
- 在构建步骤执行 JMeter 命令(非 GUI):
jmeter -n -t /usr/local/jmeter/script/test.jmx -l test.jtl -j /usr/local/jmeter/log/test.log
- 构建后操作选择 Publish Performance Test Result Report,指定 test.jtl 生成趋势与报表
- 说明:上述流程可实现 代码提交触发 → 自动执行 JMeter → 报告展示 的持续集成测试闭环。
五 常见问题与排查要点
- Java 与 JMeter 版本匹配:确保 Java 8+ 与所用 JMeter 版本兼容;
jmeter -v 可快速验证
- 报告生成失败或无数据
- 运行命令需包含
-l results.jtl;生成报告用 -e -o report 或 -g results.jtl -o report
- 若从 GUI 迁移到非 GUI,建议在
jmeter.properties 中设置 jmeter.save.saveservice.output_format=xml 以获得更完整的指标
- 接口访问与网络
- 确认被测 API 在 CentOS 服务器可达(必要时放通 防火墙/安全组 端口)
- 正确设置 协议、域名/IP、端口、路径、请求头(如 Content-Type) 与 参数/Body
- 断言与结果分析
- 使用 响应断言 验证状态码/响应体;通过 聚合报告 关注 响应时间、错误率、吞吐量 等关键指标。