CentOS环境下JMeter脚本编写指南
小樊
37
2026-01-04 09:21:33
CentOS环境下JMeter脚本编写与执行指南
一 环境准备与安装
- 安装 JDK 8(JMeter 5.x 建议使用 Java 8/11):
- 安装 OpenJDK:
sudo yum install -y java-1.8.0-openjdk-devel
- 验证:
java -version
- 安装 Apache JMeter(推荐二进制包方式,便于多版本管理):
- 下载并解压:
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz && tar -xzf apache-jmeter-5.4.3.tgz -C /opt/
- 配置环境变量(示例):
echo 'export JMETER_HOME=/opt/apache-jmeter-5.4.3' >> ~/.bashrc
echo 'export PATH=$PATH:$JMETER_HOME/bin' >> ~/.bashrc
source ~/.bashrc
- 验证:
jmeter -v
- 可选插件:将插件 JAR 放入 $JMETER_HOME/lib/ext,如 jmeter-plugins-manager-*.jar,重启 JMeter 后在“插件管理器”中安装所需插件。
二 编写第一个HTTP脚本
- 组件与结构
- 测试计划 → 线程组(虚拟用户与循环控制)→ 取样器(HTTP 请求)→ 配置元件(HTTP 信息头管理器、用户自定义变量、CSV Data Set Config)→ 断言(响应断言、JSON 断言)→ 监听器(查看结果树、聚合报告)。
- HTTP 请求关键配置
- 协议/方法/域名/端口/路径;GET 参数放在“参数”,POST 的 JSON 放在“消息体数据”,并添加信息头管理器设置 Content-Type: application/json;必要时开启 KeepAlive、配置 连接/响应超时。
- 参数化与数据驱动
- 使用 用户自定义变量 或 CSV Data Set Config 读取测试数据;CSV 文件需在所有压测节点保持相同路径与相同编码(建议 UTF-8)。
- 常用定时器
- 使用 Constant Throughput Timer 控制吞吐:目标吞吐为“每分钟样本数”,若需 QPS,将目标值设为 QPS × 60;作用域选择“All active threads”更直观控制整体吞吐。
- 断言与校验
- 响应断言校验状态码/响应文本;JSON 断言用 JSON Path(如
$.code、$.data[0].id)验证业务字段。
三 命令行执行与非GUI运行
- 基本执行与报告
- 非GUI运行:
jmeter -n -t /path/to/test.jmx -l /path/to/result.jtl
- 生成HTML报告:
jmeter -g /path/to/result.jtl -o /path/to/html-report
- 动态传参与分布式
- 动态传参:
-J变量名=值(本地属性),如 jmeter -n -t test.jmx -l log.jtl -JthreadNum=200 -JrampupTime=30
- 分布式远程启动:
-R 192.168.30.132:1099,192.168.30.130:1099
- 远程属性:
-G变量名=值(作用于远程 Slave,需与 -R 配合使用)
- 远程与防火墙要点
- 建议关闭 SSL:
server.rmi.ssl.disable=true
- 开放端口(示例):
firewall-cmd --permanent --add-port=1099/tcp && firewall-cmd --reload
- 多机压测时,CSV 数据文件需在 所有 Slave 上保持同路径。
四 性能监控与结果分析
- 实时监控
- 使用 InfluxDB + Grafana:JMeter 添加 Backend Listener(InfluxdbBackendListenerClient),配置 InfluxDB 的 8086/2003 端口与数据库;Grafana 建立面板展示 响应时间、吞吐、错误率 等。
- 结果文件与报告
- JTL 为逗号分隔的原始结果,可用 Excel/文本查看,也可在本地 JMeter 中通过“聚合报告/查看结果树”分析。
- HTML 报告包含 Average、Median、90%/95%/99% Line、Throughput、Error% 等关键指标,用于容量评估与瓶颈定位。
五 常见问题与最佳实践
- JVM 内存与编码
- 修改 $JMETER_HOME/bin/jmeter(或 jmeter.sh)中的
JVM_ARGS="-Xms1g -Xmx4g"(按机器内存合理设置);在 jmeter.properties 设置 sampleresult.default.encoding=UTF-8 避免中文乱码。
- 运行模式
- 压测务必使用非GUI模式;GUI 仅用于脚本调试。
- 分布式一致性
- JMeter 版本、JDK 版本、插件版本在 Master/Slave 需保持一致;CSV 路径、变量名、Header 配置保持一致。
- 超时与稳定性
- 为 HTTP 请求设置连接/响应超时,避免个别慢接口拖垮整个场景;必要时使用断言快速失败,减少无效样本。
- 定时与持续集成
- 结合 Jenkins 的“Build periodically”定时触发,配合“Publish Performance test result report”插件归档报告,异常时可邮件通知。