转自:https://www.cnblogs.com/poloyy/
一、什么是 CLI 模式
- CLI = Command Line,命令行模式,我们常说的 NON GUI 模式,
无界面模式
- 真正做负载测试时,应该使用 CLI 模式运行,而不是 GUI
二、启动 Jmeter GUI 时的提示
使用 jmeter.bat 运行时会有一个 cmd 窗口
官方也说了
负载测试不要用 GUI 模式,GUI模式仅用于创建测试计划和调试脚本
增加 Java 堆空间来满足你的测试环境(后面再讲解)
三、用 CLI 模式的好处
1、节约系统资源:无需启动界面,节约系统资源
2、便捷快速:仅需启动命令行,输入命令便可执行,是为命令达人最爱
3、易于持续集成:可通过shell脚本命令执行
四、CLI 模式可选参数
字段 | 含义 |
---|---|
-n | 指定 JMeter 将在 cli 模式下运行 |
-t | 包含测试计划的 jmx 文件名称 |
-l | 记录测试结果的 jtl 文件名称 |
-j | 记录 Jmeter 运行日志的文件名称 |
-g | 输出报告文件( .csv 文件) |
-e | 生成 html 格式的测试报表 |
-o | 生成测试报表的文件夹 文件夹不存在或为空 |
五、服务器相关参数
字段 | 含义 |
---|---|
-H | 代理服务器的 host 或 ip |
-P | 代理服务器的 port |
-r | 指定所有远程服务器中运行测试 |
-R | 在指定的远程服务器中运行测试 |
-X | 服务器运行完脚本后自动停止 jmeter-server |
六、属性参数
Java 系统属性和 JMeter 属性可以直接通过以下命令进行覆盖,而不用手动修改 jmeter.properties
格式 | 含义 |
---|---|
-D[prop_name]=[value] | 定义一个 Java 系统属性值 |
-J[prop_name]=[value] | 定义本地 JMeter 属性 |
-G[prop_name]=[value] | 定义要发送到所有远程服务器的 JMeter 属性 |
-G[propertyfile] | 定义一个包含 JMeter 属性的文件,该文件将发送到所有远程服务器 |
-L[category]=[priority] | 覆盖日志记录设置,将特定类别设置为给定的优先级 设置根日志记录级别 |
七、例子一
jmeter -n -t FlaskDemo.jmx -l result/report.jtl
- 执行
FlaskDemo.jmx
脚本,并在 result 目录下生成report.jtl
报告 report.jtl
存在也没关系,可以自动覆盖
八、例子二
jmeter -n -t FlaskDemo.jmx -l result/report.jtl -e -o report
- 执行
FlaskDemo.jmx
脚本 - 在 result 目录下生成
report.jtl
报告 - 最后在 report 目录下生成测试报表
切记:
report.jtl
必须不存在, report 目录必须不存在或者为空
九、例子三
jmeter -g report.jtl -o report
- 将
.jtl
文件转换为.html
文件,并保存到report
文件夹中 - 类似栗子二,只不过跳过了执行
.jmx
文件的步骤,直接将.jtl
文件转换为.html
文件
和例子二的结果一样
9.1 在 Jmeter GUI 中有一个类似的功能
点击 Tools
选好 jtl 文件,properties 配置文件,存放 HTML 报告的文件夹
十、例子四
jmeter -n -t FlaskDemo.jmx -r -l result/report.jtl
启动 所有
远程 slave 机执行 FlaskDemo.jmx
,并在 result 目录下生成 report.jtl
10.1 重点
会执行 jmeter.properties
的 remote_hosts
填的所有远程 slave 机,这里有两台:一台是虚拟机,另一台是本机也充当 slave 机
10.2 master 机
10.3 虚拟 slave 机
10.4 本地 slave 机
十一、例子五
jmeter -n -t FlaskDemo.jmx -l result/report.jtl -R 172.20.72:38:1234,127.0.0.1:1234
启动 指定的
远程 slave 机执行 FlaskDemo.jmx
,并在 result 目录下生成 report.jtl
和 -r
不一样, -R
是指定slave机的,并不是所有 slave 机
11.1 master 机
11.2 slave 机
十二、例子六
jmeter -n -t FlaskDemo.jmx -l result/report.jtl -R 172.20.72:38:1234 -X
跟例子五的基本一样,只不过加了 -X,让远程服务器在执行完脚本后自动退出 jmeter-server
12.1 master 机
跑了两次,第一次没有 -X,第二次加了 -X
12.2 slave 机
12.3 当然想一劳永逸的话
可以将属性 `jmeterengine.remote.system.exit` 设置为 true(默认值为 false ),则 JMeter 将在测试结束后停止 RMI 之后调用 System.exit(0),但不建议这样