Apache JMeter 常用 CLI 命令与工具详解
Apache JMeter 5.6.3 常用 CLI 命令与工具详解,含非 GUI 压测、报告生成、分布式 agent、属性注入、结果解析与内置元件速查,均已实测。
Apache JMeter 常用 CLI 命令与工具详解
目标:详解 Apache JMeter 5.6.3 的非 GUI CLI 命令、常用脚本工具与内置压测元件,覆盖压测运行、报表生成、分布式 agent、属性注入与结果处理。已在 Ubuntu 22.04.5 / JDK17 / JMeter 5.6.3 环境实测通过。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(x86_64)
- Apache JMeter:5.6.3(安装于
/opt/apache-jmeter) - 启动脚本:
/opt/apache-jmeter/bin/jmeter - agent 脚本:
/opt/apache-jmeter/bin/jmeter-server - agent 监听端口:1099(默认)
- 压测目标:
http://127.0.0.1:8080/(Python http.server) - 结果文件:
/opt/apache-jmeter/bin/result.jtl - 测试账号:
root/q1w2e3r4(如涉及)
二、工具概览
| 工具/命令 | 用途 | 位置 |
|---|---|---|
jmeter(jmeter.sh) | 主 CLI:版本、GUI、非 GUI 压测、报告生成 | bin/ |
jmeter-server | 分布式压测的 agent 启动脚本 | bin/ |
jps | JDK 自带,查看 Java 进程及 JVM 实际参数 | $JAVA_HOME/bin |
jmeter -g | 从已有 JTL 生成 HTML 报告 | bin/ |
| GUI 编辑器 | 制作/编辑 .jmx 测试计划(需图形环境) | bin/ |
💡 说明:无图形界面的服务器统一用 CLI(非 GUI)模式,实测主路径为
-n -t -l -e -o组合。
三、前置条件
- JMeter 5.6.3 已安装并配置 JAVA_HOME(见《Ubuntu 22.04 安装 Apache JMeter 5.6.3 指南》)。
- 已准备
.jmx测试计划,目标服务可达(本文用127.0.0.1:8080)。
四、CLI 基础命令详解
4.1 查看帮助与用法(jmeter --help)
cd /opt/apache-jmeter/bin
./jmeter --help
回显(节选,格式对齐原作):
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.6.3
Copyright (c) 1999-2024 The Apache Software Foundation
To run Apache JMeter in GUI mode, open a command prompt and type:
jmeter.bat(Windows)/jmeter.sh(Linux) [-p property-file]
To run Apache JMeter in NON_GUI mode:
jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file]
To run Apache JMeter in NON_GUI mode and generate a report at end :
jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test-file [-p property-file] [-l results-file] [-j log-file] -e -o [Path to output folder]
To generate a Report from existing CSV file:
jmeter.bat(Windows)/jmeter.sh(Linux) -g [csv results file] -o [path to output folder]
To tell Apache JMeter to use a proxy server:
jmeter.bat(Windows)/jmeter.sh(Linux) -H [your.proxy.server] -P [your proxy server port]
To run Apache JMeter in server mode:
jmeter-server.bat(Windows)/jmeter-server(Linux)
4.2 查看版本(jmeter -v)
./jmeter -v
回显(节选):
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___| | | | ____| | | \/ | ____|_ _| ____| _ \
/ _ \ | |_) / _ \| | | |_| | _| _ | | |\/| | _| | | | _| | |_) |
/ ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
/_/ \_\_| /_/ \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 5.6.3
Copyright (c) 1999-2024 The Apache Software Foundation
4.3 非 GUI 压测并生成报告(jmeter -n -t -l -e -o)
核心命令:运行测试 -> 保存结果 JTL -> 生成 HTML 报告。
cd /opt/apache-jmeter/bin
./jmeter -n -t http_test.jmx -l result.jtl -e -o /opt/report 2>&1
回显(节选,格式化对齐原作):
Creating summariser <summary>
Created the tree successfully using http_test.jmx
Starting standalone test @ 2026 Oct 11 11:10:40 GMT (1791717040317)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary = 10 in 00:00:02 = 4.7/s Avg: 72 Min: 3 Max: 156 Err: 0 (0.00%)
Tidying up ... @ 2026 Oct 11 11:10:43 GMT (1791717043124)
... end of run
💡 summary 字段含义:
10 in 00:00:02(总请求数与用时)、4.7/s(吞吐)、Avg/Min/Max(响应时间均值/最小/最大)、Err: 0 (0.00%)(错误数与错误率)。
4.4 运行监控端口提示
非 GUI 运行时会提示 Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445。可用向该端口发送指令控制运行中的测试(见端口工具段)。
4.5 参数速查(常用 CLI 选项)
| 选项 | 全称 | 含义 | 实测样本 |
|---|---|---|---|
-n | --nongui | 非 GUI 模式 | -n |
-t | --testfile | 测试计划文件 | -t http_test.jmx |
-l | --logfile | 结果 JTL 输出 | -l result.jtl |
-j | --jmeterlogfile | 日志输出 | -j /var/log/jmeter.log |
-e | --reportatendofloadtests | 结束后生成报告 | -e |
-o | --reportoutputfolder | 报告输出目录 | -o /opt/report |
-g | --reportonly | 仅从结果文件生成报告 | -g result.jtl -o /opt/report2 |
-H | --proxyHost | HTTP 代理主机 | -H proxy.example.com |
-P | --proxyPort | HTTP 代理端口 | -P 8080 |
-J<名>=值 | -Jproperty | 设置 JMeter 属性 | -Jsummariser.interval=10 |
-R | --remotestart | 远程分布式 agent 启动 | -R 192.168.1.10 |
-p | --propfile | 指定额外 properties 文件 | -p user.properties |
-s | --server | 以 agent 服务器模式运行 | -s |
-Z | --remoteexit | 结束时关闭远程 agent | -Z |
五、报告生成工具详解
5.1 运行结束自动生成(-e -o)
-e 与 -o 必须与 -n 连用,在测试结束自动生成仪表盘报告到指定目录(目录需不存在或为空)。
5.2 从已有结果文件生成(jmeter -g)
已有 result.jtl 时,无需重跑测试即可生成 HTML 报告:
cd /opt/apache-jmeter/bin
./jmeter -g result.jtl -o /opt/report2 2>&1
生成结果:
ls /opt/report2
回显:
content index.html sbadmin2-1.0.7
报告目录包含 index.html(仪表盘入口)、content/(图表)、statistics.json(汇总 JSON)等。
⚠️ 注意:
-g不能与-n同时使用,否则报错Error: Incompatible options --n/--nongui and -g/--reportonly found.(实测回显)。
5.3 报告统计 JSON 解析
报告目录中的 statistics.json 是机器可读的汇总结果,用 python3 快速查看关键指标:
python3 -c "import json;d=json.load(open('/opt/report/statistics.json'));print(d['Total'])"
输出(节选):
{'transaction': 'Total', 'sampleCount': 10, 'errorCount': 0, 'errorPct': 0.0, 'meanResTime': 72.6, 'medianResTime': 46.0, 'minResTime': 3.0, 'maxResTime': 156.0, 'throughput': 8.85, 'receivedKBytesPerSec': 1.88}
六、分布式(远程 agent)工具详解
6.1 启动 agent(jmeter-server)
在参与压测的 agent 机器上启动:
cd /opt/apache-jmeter/bin
./jmeter-server
回显(节选):
Created remote object: UnicastRemoteObject ...
Setting remote server listening on port: 1099
Starting remote server
💡 agent 默认监听 1099(对应
server_port=1099)。
6.2 master 发起远程压测(-R)
在 master 机器上指定 agent 地址发起分布式压测:
cd /opt/apache-jmeter/bin
./jmeter -n -t http_test.jmx -R 192.168.1.10 -l result.jtl -e -o /opt/report
多 agent 用逗号分隔:
./jmeter -n -t http_test.jmx -R 192.168.1.10,192.168.1.11 -l result.jtl
6.3 远程属性与 ad-hoc 结束
配合 -J 向 agent 注入属性,若在 jmeter.properties 中设置了 remote_hosts,用 -Jremote_hosts=... 覆盖。
七、运行中控制与端口工具详解
7.1 Shutdown / Stop 指令(端口 4445)
非 GUI 启动时 JMeter 在(默认)端口 4445 监听控制指令。测试运行中可发送:
shutdown.sh # 优雅停止(等当前迭代完成)
stoptest.sh # 立即停止
对应管理脚本位于 bin 下(实测脚本存在):bin/shutdown.sh、bin/stoptest.sh。
💡 说明:这两个脚本向本机 JMeter 进程的 4445 控制端口发送指令;分布式场景需在 master 上执行。
7.2 JVM 进程查看工具(jps)
jps 是 JDK 自带工具,用于查看 Java 进程及其实际 JVM 参数:
. /etc/profile
jps -v
回显(节选):
4668 ApacheJMeter.jar ... -Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC ...
4716 Jps -Dapplication.home=/usr/lib/jvm/java-17-openjdk-amd64 -Xms8m ...
用途:确认 JMeter 进程存活、堆参数是否按配置生效(对应《配置参数详解》中 HEAP 修改的验证手段)。
八、常用 CLI 组合示例
8.1 标准压测 + 日志分离
./jmeter -n -t http_test.jmx -l /opt/results/result.jtl -j /var/log/jmeter.log -e -o /opt/results/report
8.2 命令行临时调参
./jmeter -n -t http_test.jmx -Jthreadgroup_num=20 -Jsummariser.interval=5 -l result.jtl
8.3 通过代理访问目标
./jmeter -n -t http_test.jmx -H 192.168.1.1 -P 8080 -l result.jtl
九、注意事项
-e/-o输出目录必须不存在或为空,否则报告生成失败。- 非 GUI 模式必须以
-n开头;-g单独用于生成报告,勿与-n混用。 jps -v是确认 JVM 参数生效的权威手段(ps -ef | grep [j]ava亦可)。- 分布式 agent 的 1099 端口与 JMeter 控制端口(4445)需在防火墙放行。
十、常见问题
Q1:-g 报 Incompatible options --n/--nongui and -g
-g 只用于从已存在的 JTL 生成报告,不能与 -n(运行测试)同时出现;先 -n -t ... -l result.jtl 跑完,再单独 -g result.jtl -o 报告目录。
Q2:summary 上报错率非 0
检查目标服务是否返回非 2xx/3xx、超时或连接失败;结合 result.jtl 中 responseCode 列(如 500/404/000)定位。
Q3:分布式压测执行后 master 卡住无结果
确认 agent jmeter-server 已启动且 -R 地址端口(默认 1099)正确;检查 remote_hosts/防火墙;可加 -Jlog_level.jmeter=DEBUG 提升 agent 日志级别定位。
Q4:报告生成失败,提示输出目录已存在
-o 指定目录必须不存在或为空;先 rm -rf /opt/report 再重跑。
十一、参考链接
- 官方命令速查:https://jmeter.apache.org/usermanual/get-started.html#options
- 非 GUI 模式说明:https://jmeter.apache.org/usermanual/get-started.html#non_gui
- 生成仪表盘报告:https://jmeter.apache.org/usermanual/generating-dashboard.html
- 分布式测试指南:https://jmeter.apache.org/usermanual/remote-test.html
- JVM 调优说明:https://jmeter.apache.org/usermanual/get-started.html#opt_jvm