如何在CentOS上使用JMeter进行自动化测试
导读:在 CentOS 上使用 JMeter 进行自动化测试 一 环境准备与安装 安装 Java 8+(JMeter 5.x 要求 Java 8 及以上),并配置环境变量: 安装 OpenJDK:sudo yum install -y jav...
在 CentOS 上使用 JMeter 进行自动化测试
一 环境准备与安装
- 安装 Java 8+(JMeter 5.x 要求 Java 8 及以上),并配置环境变量:
- 安装 OpenJDK:
sudo yum install -y java-1.8.0-openjdk-devel - 配置环境变量(示例):
/etc/profile中添加export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport PATH=$PATH:$JAVA_HOME/bin
- 验证:
java -version
- 安装 OpenJDK:
- 安装 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/ - 配置环境变量:
/etc/profile中添加export JMETER_HOME=/opt/apache-jmeter-5.4.3export PATH=$PATH:$JMETER_HOME/bin
- 验证:
jmeter -v
- 下载并解压:
- 可选:使用 Docker 运行 JMeter(便于环境隔离)
- 拉取镜像:
sudo docker pull jmeter:latest - 运行示例:
sudo docker run -it --rm -v /path/to/scripts:/scripts jmeter:latest -n -t /scripts/test.jmx -l /scripts/result.jtl -e -o /scripts/report
- 拉取镜像:
二 编写可自动化的 JMeter 脚本
- 在本地 GUI 创建并调试脚本(.jmx),关键要素:
- 线程组:设置并发用户数(Number of Threads)、Ramp-Up Period、循环次数
- 取样器:HTTP Request、JDBC Request 等
- 配置元件:HTTP Request Defaults、HTTP Cookie Manager、HTTP Header Manager
- 定时器:模拟思考时间(如 Constant Timer)
- 断言:Response Assertion、Duration Assertion(校验状态码、响应内容、响应时间阈值)
- 监听器:仅保留轻量级监听器用于结果落盘(如 Summary Report、Aggregate Report),避免在压测时消耗资源
- 参数化与数据驱动:
- 使用 CSV Data Set Config 读取测试数据(如账号、密码),在请求中引用变量
${ username}、${ password}
- 使用 CSV Data Set Config 读取测试数据(如账号、密码),在请求中引用变量
- 团队化与复用:
- 用逻辑控制器(Transaction Controller)聚合业务链路耗时
- 将公共配置抽离为变量,形成可复用脚本与文档说明
三 在 CentOS 上非 GUI 执行与报告生成
- 非 GUI 执行(推荐):
jmeter -n -t /path/to/testplan.jmx -l /path/to/result.jtl- 常用参数:
-n非 GUI 模式-t指定测试计划-l指定结果文件(JTL/CSV)-j指定日志文件-e -o测试结束后生成 HTML 报告(需保证输出目录为空)
- 常用参数:
- 仅生成 HTML 报告(已有 JTL 时):
jmeter -g /path/to/result.jtl -o /path/to/report - 示例脚本(可按需加入清理与归档):
jmeter -n -t /opt/jmeter/script/test.jmx -l /opt/jmeter/log/test.jtl -j /opt/jmeter/log/run.log -e -o /opt/jmeter/html/report
- 报告解读要点:关注 响应时间(含 90%/95%/99% Line)、吞吐量(Throughput)、错误率 等核心指标
四 与 Jenkins 集成实现持续自动化
- 在 Jenkins 安装插件:Performance Plugin(用于展示 JMeter 性能趋势与报表)
- 构建步骤(Execute shell):
- 清理旧数据:
rm -rf /opt/jmeter/log/* /opt/jmeter/html/* ${ WORKSPACE} /test.jtl - 执行压测:
/opt/jmeter/bin/jmeter.sh -n -t /opt/jmeter/script/test.jmx -l test.jtl -j /opt/jmeter/log/test.log
- 清理旧数据:
- 构建后操作:
- 选择 Publish Performance Test Result Report,指定 JTL 文件路径(如
${ WORKSPACE} /test.jtl)
- 选择 Publish Performance Test Result Report,指定 JTL 文件路径(如
- 触发方式:可配置 定时任务(Cron) 或代码变更触发,实现按日程或按提交自动压测与报表归档
五 性能与稳定性优化要点
- JMeter 自身调优:
- 调整 JVM 堆内存(如在
jmeter或jmeter.sh中设置-Xms/-Xmx,一般不超过物理内存的 2/3) - HTTP 客户端优化:如设置
httpclient4.idletimeout=10000(单位毫秒)
- 调整 JVM 堆内存(如在
- 操作系统与网络:
- 提升文件句柄与进程数:
/etc/security/limits.conf中设置* soft/hard nofile 65536、* soft/hard nproc 65565 - TCP 参数优化:
/etc/sysctl.conf中设置net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30net.ipv4.ip_local_port_range=1024 65000- 执行
sysctl -p生效
- 提升文件句柄与进程数:
- 分布式压测(突破单机瓶颈):
- 架构:Master–Slave;Master 分发脚本与汇总结果,Slave 执行压测
- 配置:
jmeter.properties中设置remote_hosts=slave1_ip:1099,slave2_ip:1099 - 启动:
jmeter-server(Slave),Master 命令行使用-R slave1_ip,slave2_ip远程启动 - 注意:Master/Slave 网络互通、时间同步、关闭不必要防火墙规则
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS上使用JMeter进行自动化测试
本文地址: https://pptw.com/jishu/770675.html
