JMeter non-GUI 模式执行
在用JMeter进行压测时,为了少占用客户端资源,一般不使用带有界面的GUI模式运行。所以在进行正式的压测时一定要使用non-gui模式运行,如果并发数很高或者客户端的硬件资源比较一般的话,还可以以server模式用多个client进行分布式测试。
命令行模式的优势
- 没有交互界面,节约系统资源
- 只需启动命令行,输入命令执行即可,可以远程或分部执行
- 易于持续集成,通过shell脚本或批处理命令执行,易于生成报告
命令参数
命令参数 | 命令解释 |
-n | 设置命令行模式 |
-t |
指定JMX脚本路径 (当前目录or绝对路径or相对路径) |
-l |
指定结果文件路径(jtl or csv) (路径不存在将自动创建) |
-j |
指定执行日志路径 (路径不存在不会自动创建,同时将日志输出至命令行控制台) |
-r |
设置分布式(远程)执行 服务器列表由 JMETER_HOME\bin\jmeter.properties中remote_hosts 指定 |
-R |
指定远程(分布式)服务器列表 配置形式同remote_hosts |
-g |
指定测试结果文件路径,仅用于生成测试报表 csv结果文件 |
-e | 设置测试完成后生成测试报表 |
-o |
指定测试报表生成文件夹,文件夹必须为空或不存在 |
-H |
指定代理服务器域名或代理服务器IP |
-P | 指定代理服务器端口号 |
命令执行
- 在 jmeter.properities文件中把#jmeter.save.saveservice.output_format=xml注释掉
- 开始—运行—cmd,进入到命令行模式;
- cd到JMeter的bin目录下,(如果配置过JMeter的环境变量,在任意目录下都可以执行);
- 执行命令:
1 jmeter -n -t D:\XXXX\scripts\test.jmx -l D:\XXXX\jmeter-Non-GUI-results\csv\html.csv -e -o D:\XXXX\jmeter-Non-GUI-results\html -j D:\XXXX\jmeter-Non-GUI-results\log\01-log.log
通过传参就可以实现不同线程数和持续时间的场景测试
1 jmeter -n -t .\scripts\test.jmx -J threads=10 -J duration=10 -l .\jtl\test001.jtl -j .\jtl\test001.log