节点规划:准备一台Master节点(控制测试启动、收集结果)和至少一台Slave节点(执行测试任务)。所有节点需满足:
安装Java:在所有节点执行以下命令安装OpenJDK 1.8:
sudo yum install -y java-1.8.0-openjdk-devel
验证安装:java -version(需显示1.8.x版本)。
下载并解压JMeter:在所有节点执行以下命令(以5.5版本为例):
wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.5.zip
unzip apache-jmeter-5.5.zip -d /opt/
export JMETER_HOME=/opt/apache-jmeter-5.5 # 设置环境变量(可选但推荐)
export PATH=$JMETER_HOME/bin:$PATH # 将JMeter加入PATH
验证安装:jmeter -v(需显示JMeter版本信息)。
修改JMeter配置文件:进入Slave节点的JMeter bin目录,编辑jmeter.properties:
vi $JMETER_HOME/bin/jmeter.properties
找到并修改以下参数(取消注释或新增):
server.rmi.ssl.disable=true # 禁用SSL(简化配置,若需启用需配置证书)
rmi.server.hostname=<Slave节点IP> # 设置本机IP(如192.168.1.101)
server.rmi.localport=1099 # 设置RMI本地端口(默认1099,可自定义)
保存退出。
启动JMeter Server:在Slave节点的JMeter bin目录下执行:
./jmeter-server
正常启动后会显示类似日志:“Started remote host 192.168.1.101 (192.168.1.101)”。
修改JMeter配置文件:进入Master节点的JMeter bin目录,编辑jmeter.properties:
vi $JMETER_HOME/bin/jmeter.properties
找到remote_hosts参数,添加所有Slave节点的IP和端口(用逗号分隔):
remote_hosts=192.168.1.101:1099,192.168.1.102:1099 # 示例:两台Slave
保存退出。
(可选)优化Master配置:编辑Master节点的jmeter.properties,调整以下参数以避免端口冲突:
client.rmi.localport=0 # 随机选择客户端端口
server.rmi.port=1234 # 控制节点RMI端口(可选,需与Slave的localport一致)
server.rmi.localport=1099 # 控制节点RMI本地端口(默认1099)
方式一:命令行启动(推荐)
在Master节点执行以下命令,替换为实际路径和Slave IP:
jmeter -n -t /opt/apache-jmeter-5.5/test_plan.jmx \
-R 192.168.1.101:1099,192.168.1.102:1099 \
-l /opt/apache-jmeter-5.5/results.jtl \
-e -o /opt/apache-jmeter-5.5/report
参数说明:
-n:非GUI模式(避免占用资源);-t:指定测试计划(.jmx文件)路径;-R:指定Slave节点的IP和端口(多个用逗号分隔);-l:指定结果文件(.jtl)路径;-e -o:测试完成后生成HTML报告(-o需指定空目录)。方式二:GUI启动(调试用)
在Master节点打开JMeter GUI,点击顶部菜单栏【运行】→【远程启动】→ 选择所有Slave节点(或“远程启动所有”),再点击【启动】按钮即可。
连接失败:
确保Slave节点的防火墙开放了RMI端口(默认1099),执行以下命令:
sudo firewall-cmd --zone=public --add-port=1099/tcp --permanent
sudo firewall-cmd --reload
若仍无法连接,检查Slave节点的jmeter-server进程是否启动(ps -ef | grep jmeter-server)。
版本不一致:
所有节点的JDK和JMeter版本必须完全一致(如JDK 1.8.0_392 + JMeter 5.5),否则会出现序列化错误。
参数化文件路径问题:
若测试计划中使用了CSV参数化文件,需将该文件复制到所有Slave节点的相同路径(如/opt/apache-jmeter-5.5/data/test.csv),并在测试计划中指定绝对路径。
通过以上步骤,即可在CentOS环境中完成JMeter分布式测试的搭建与执行。测试完成后,可通过Master节点的report目录查看HTML报告,或分析results.jtl文件获取详细指标。