Ubuntu环境下JMeter分布式测试实施指南
JMeter分布式测试通过**主节点(Controller)与从节点(Slave/Worker)**协同工作:主节点负责管理测试流程(分发脚本、收集结果),从节点负责执行实际的负载生成任务(不启动GUI)。这种方式可突破单机硬件限制(如CPU、内存),模拟更大规模的并发请求。
环境要求
ntpdate命令校准,避免结果偏差)。软件安装
sudo apt update && sudo apt install openjdk-11-jdk -y,验证安装java -version。apache-jmeter-5.6.2.tgz),解压至所有节点的统一目录(如/opt/apache-jmeter-5.6.2)。从节点需配置为JMeter Server模式,负责接收主节点指令并执行测试:
修改JMeter配置文件
进入从节点JMeter目录的bin文件夹,编辑jmeter.properties文件:
server.rmi.ssl.disable=true(禁用SSL,简化配置),取消注释。remote_hosts=,在其后添加从节点IP及端口(默认1099),如remote_hosts=192.168.1.102:1099(多节点用逗号分隔)。server_port为自定义端口(如server_port=1099),确保端口未被占用。配置JMeter Server启动脚本
编辑bin/jmeter-server文件(Linux下为Shell脚本),添加从节点IP参数:
JVM_ARGS="-Djava.rmi.server.hostname=192.168.1.102"(替换为从节点实际IP),保存后赋予执行权限:chmod +x jmeter-server。
启动从节点服务
在从节点终端执行:./bin/jmeter-server -Djava.rmi.server.hostname=192.168.1.102(替换为实际IP),看到“Created remote object”提示即启动成功。如需后台运行,可使用nohup ./bin/jmeter-server -Djava.rmi.server.hostname=192.168.1.102 &。
主节点负责控制测试流程,无需修改默认配置(除非需禁用自身作为Worker):
修改JMeter配置文件
进入主节点JMeter目录的bin文件夹,编辑jmeter.properties文件:
remote_hosts=,添加所有从节点IP及端口(如remote_hosts=192.168.1.102:1099,192.168.1.103:1099),保存。server.rmi.ssl.disable=true(禁用SSL)。验证从节点连接
在主节点终端执行:./bin/jmeter -n -t your_test.jmx -l result.jtl -R 192.168.1.102,192.168.1.103(-n表示非GUI模式,-t指定测试脚本,-l指定结果文件,-R指定从节点IP)。若输出“Starting distributed test with remote engines: [192.168.1.102, 192.168.1.103]”即连接成功。
准备测试脚本
在主节点编写JMX测试脚本(包含线程组、HTTP请求、监听器等),确保脚本中的参数化文件(如CSV)在所有从节点的相同路径下存在(如/opt/apache-jmeter-5.6.2/bin/test.csv)。
启动分布式测试
在主节点终端执行以下命令(以非GUI模式运行,生成HTML报告):
./bin/jmeter -n -t /opt/apache-jmeter-5.6.2/bin/your_test.jmx -l /opt/apache-jmeter-5.6.2/bin/result.jtl -e -o /opt/apache-jmeter-5.6.2/bin/reports -R 192.168.1.102,192.168.1.103
参数说明:
-e:测试结束后生成HTML报告;-o:报告输出目录;-R:指定从节点IP列表。查看测试结果
测试完成后,主节点的reports目录会生成HTML报告,可通过浏览器打开查看汇总结果(如响应时间、吞吐量、错误率等)。
.jtl)是所有从节点结果的汇总,无需单独合并。jmeter脚本中的HEAP参数(如HEAP="-Xms2g -Xmx4g"),增加JVM堆内存。