如何从单个命令提示符并行运行多个JMeter JMX文件?
当然可以!不用手动开5个命令提示符窗口,有几种简单的方法能让你在单个窗口里并行运行多个JMX文件,我给你详细拆解下:
方法1:直接用命令行的并行特性(最快上手)
如果你用Windows系统
在CMD里,用start命令就能启动独立的JMeter进程,每个JMX对应一个,它们会并行跑起来,而且都是从同一个窗口触发的:
start jmeter -n -t test1.jmx -l result1.jtl start jmeter -n -t test2.jmx -l result2.jtl start jmeter -n -t test3.jmx -l result3.jtl start jmeter -n -t test4.jmx -l result4.jtl start jmeter -n -t test5.jmx -l result5.jtl
要是用PowerShell,就换成Start-Process命令,效果一样:
Start-Process jmeter -ArgumentList "-n","-t","test1.jmx","-l","result1.jtl" Start-Process jmeter -ArgumentList "-n","-t","test2.jmx","-l","result2.jtl" # 剩下3个测试依葫芦画瓢就行
如果你用Linux/macOS系统
在bash或者zsh里,只需要在每个JMeter命令后面加个&,就能让进程后台运行,实现并行执行:
jmeter -n -t test1.jmx -l result1.jtl & jmeter -n -t test2.jmx -l result2.jtl & jmeter -n -t test3.jmx -l result3.jtl & jmeter -n -t test4.jmx -l result4.jtl & jmeter -n -t test5.jmx -l result5.jtl &
要是想等所有测试都跑完再回到命令行输入状态,可以最后加个wait命令,这样脚本会一直等到所有JMeter进程结束才继续:
jmeter -n -t test1.jmx -l result1.jtl & jmeter -n -t test2.jmx -l result2.jtl & jmeter -n -t test3.jmx -l result3.jtl & jmeter -n -t test4.jmx -l result4.jtl & jmeter -n -t test5.jmx -l result5.jtl & wait echo "所有测试都执行完啦!"
方法2:写个脚本一键运行(更省心)
把上面的命令保存成脚本文件,以后不用每次都敲一堆命令,双击就能启动所有测试:
Windows批处理脚本(保存为run_jmeter_tests.bat)
@echo off echo 正在启动所有JMeter并行测试... start jmeter -n -t test1.jmx -l result1.jtl start jmeter -n -t test2.jmx -l result2.jtl start jmeter -n -t test3.jmx -l result3.jtl start jmeter -n -t test4.jmx -l result4.jtl start jmeter -n -t test5.jmx -l result5.jtl echo 所有测试进程已启动,请留意结果文件!
Linux/macOS Shell脚本(保存为run_jmeter_tests.sh)
#!/bin/bash echo "正在启动所有JMeter并行测试..." jmeter -n -t test1.jmx -l result1.jtl & jmeter -n -t test2.jmx -l result2.jtl & jmeter -n -t test3.jmx -l result3.jtl & jmeter -n -t test4.jmx -l result4.jtl & jmeter -n -t test5.jmx -l result5.jtl & wait echo "所有测试执行完成!"
记得给Shell脚本加执行权限:chmod +x run_jmeter_tests.sh
方法3:分布式测试(进阶场景)
如果以后你要扩展到多台机器跑测试,或者想更统一地管理测试任务,可以用JMeter的分布式模式:
- 选一台机器当主控机,其他机器(甚至同一台机器的多个JMeter实例)当从机
- 把所有JMX文件放到主控机的指定目录
- 通过主控机的命令一次性触发所有从机执行测试(可以分配不同的JMX给不同从机)
不过单机器跑5个JMX的话,前面两种方法足够简单高效,这个适合更复杂的场景。
几个要注意的小细节
- 每个测试的结果文件(
.jtl)一定要用不同的名字,不然会互相覆盖,白跑测试 - 单机器并行跑多个JMeter测试时,要注意机器的CPU和内存资源,别因为负载太高导致测试结果不准
- 如果需要统一生成测试报告,等所有测试跑完后,用
jmeter -g result.jtl -o report_folder命令分别生成每个测试的报告就行
内容的提问来源于stack exchange,提问作者Praveen PS
相关产品推荐
相关产品推荐

