如何在Ubuntu上使用JMeter进行压力测试
导读:在 Ubuntu 上使用 JMeter 进行压力测试 一 环境准备与安装 安装 Java 11(Ubuntu 推荐 LTS 版本):sudo apt update && sudo apt install -y openjd...
在 Ubuntu 上使用 JMeter 进行压力测试
一 环境准备与安装
- 安装 Java 11(Ubuntu 推荐 LTS 版本):sudo apt update & & sudo apt install -y openjdk-11-jdk;验证:java -version。JMeter 5.x 需 Java 8+。
- 下载并解压 Apache JMeter(建议最新稳定版,如 5.6.x):
wget https://dlcdn.apache.org/jmeter/binaries/apache-jmeter-5.6.2.tgz
tar -xzf apache-jmeter-5.6.2.tgz & & cd apache-jmeter-5.6.2 - 可选:配置环境变量(便于全局使用 jmeter 命令)
echo ‘export JMETER_HOME=/opt/jmeter’ | sudo tee -a /etc/profile
echo ‘export PATH=$JMETER_HOME/bin:$PATH’ | sudo tee -a /etc/profile
source /etc/profile
验证:jmeter -v。
二 快速开始一个 HTTP 压测
- 在 GUI 中创建测试计划(仅用于调试与录制,正式压测请用命令行):
- 添加线程组:设置 Number of Threads(并发数)、Ramp-Up Period(启动时间)、Loop Count(循环次数)。
- 添加 HTTP 请求默认值(协议、域名、端口)。
- 添加 HTTP 请求(路径、方法、参数或 Body)。
- 添加 HTTP Header Manager(如 Content-Type: application/json)。
- 添加 断言(如响应码 200 或 JSON Assertion)。
- 添加监听器:View Results Tree(调试用)、Summary Report/Aggregate Report(统计用)。
- 保存为 test.jmx,上传至 Ubuntu。
- 非 GUI 执行并生成报告(推荐):
jmeter -n -t test.jmx -l result.jtl -e -o report/
说明:-n 非 GUI;-t 指定脚本;-l 保存原始结果;-e -o 生成 HTML 报告。 - 仅保存结果(后续再生成报告):
jmeter -n -t test.jmx -l result.jtl。
三 命令行批量与参数化压测
- 批量运行取平均(示例:循环 10 次):
for i in { 1…10} ; do
jmeter -n -t test.jmx -l result-$i.jtl -e -o report-$i/;
done - 参数化线程数(避免频繁改 JMX):在 JMeter 中将线程数用变量如 ${
__P(threadNum)}
引用,运行时传入:
for t in 100 200 500 1000; do
jmeter -n -t test.jmx -J threadNum=$t -l result-$t.jtl -e -o report-$t/;
done - 结果汇总:HTML 报告在各自 report-*/index.html;如需程序化分析,可解析 result-*.jtl 或在报告目录的 statistics.json 中读取吞吐等指标。
四 分布式压测搭建
- 架构与原理:一台 控制机(调度与汇总)+ 多台 执行机/代理(实际发压),通过 RMI 通信。
- 环境要求:所有机器 Java/JMeter 版本一致、网络互通;开放 RMI 端口 1099 及高端口范围(如 4000–5000),或临时关闭防火墙。
- 执行机配置(示例 IP 192.168.1.101):
- 编辑 apache-jmeter-5.6.2/bin/jmeter.properties:
server.rmi.ssl.disable=true
java.rmi.server.hostname=192.168.1.101 - 启动服务:
nohup ./jmeter-server -Djava.rmi.server.hostname=192.168.1.101 > jmeter-server.log 2> & 1 &
- 编辑 apache-jmeter-5.6.2/bin/jmeter.properties:
- 控制机配置:
- 编辑 jmeter.properties:remote_hosts=192.168.1.101:1099,192.168.1.102:1099
- 同步测试资源:将 .jmx 及依赖(如 CSV 数据、JAR 插件)复制到各执行机的 相同路径。
- 运行:jmeter -n -t test.jmx -r -l result.jtl(远程启动所有执行机)。
- 常见问题排查:
- 无法连接:检查防火墙/安全组、确保 1099 可达、主机名解析正确。
- SSL 问题:确认控制机与执行机均设置 server.rmi.ssl.disable=true。
- 资源不足:在执行机 bin/jmeter 中调大堆内存,例如:HEAP=“-Xms2g -Xmx4g”。
五 结果分析与注意事项
- 关键指标:关注 吞吐量(Throughput)、响应时间(Response Time)、错误率(Error Rate) 的趋势与分布,结合 Aggregate Report/Summary Report 定位瓶颈(如数据库、网络、应用线程池)。
- 被测系统监控:在压测同时采集服务器 CPU、IO、内存、网络(如 sysstat 的 sar/iostat/top),与 JMeter 结果关联分析。
- 测试有效性:避免仅用 ab 等轻量工具对比,JMeter 会完整处理响应,更贴近真实客户端行为;必要时结合 CSV 数据集 做参数化与场景化压测。
- 正式压测建议:
- 先用 GUI 调通脚本,再用 非 GUI 执行;
- 逐步提升并发(如 100 → 500 → 1000),每个阶梯稳定后再继续;
- 每次运行使用 干净的报告目录,并保留原始 .jtl 以便复核。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上使用JMeter进行压力测试
本文地址: https://pptw.com/jishu/777907.html
