JMeter分布式
本文详细覆盖两种JMeter分布式架构,均基于指定版本(JDK 1.8.0_221、JMeter 5.1.1),完整包含JDK与JMeter安装配置、分布式参数调优、测试执行全流程。
一、核心前提与版本规范
分布式测试的稳定性依赖“环境绝对统一”,两种场景均需遵循以下基础要求,规避兼容性问题:
- 版本统一:所有节点(主控+从机)必须使用JDK 1.8.0_221、JMeter 5.1.1,严禁混合版本。
- 网络连通:主控机与从机处于同一局域网,双向ping通,关闭防火墙或开放RMI通信端口(1099、50000)。
- 权限与路径:Linux节点需具备目录读写执行权限;Windows路径严禁含中文、空格;场景2严格统一JMeter目录为
/usr/local/jmeter。 - 文件一致性:场景1优先从Windows主控机拷贝JMeter压缩包至Linux从机,场景2统一从主控机分发压缩包,确保包文件无差异。
二、场景1:主控机Windows + 从机Linux(跨系统架构)
本场景适合Windows桌面端编写测试计划、Linux服务器承载并发压力的组合,核心解决跨系统文件传输、通信适配与路径兼容问题,重点强化JMeter包从Windows拷贝至Linux的实操步骤。
(一)JDK 1.8.0_221安装与配置(跨系统统一)
- JDK下载
访问Oracle官网历史版本页面(需注册Oracle账号),下载对应系统安装包,确保所有节点安装包同源:
- Windows主控机:
jdk-8u221-windows-x64.exe(exe格式,便于安装)。 - Linux从机:
jdk-8u221-linux-x64.tar.gz(tar.gz格式,适配服务器环境)。
备注:无法访问Oracle官网可通过国内镜像站下载,务必校验版本为1.8.0_221,避免精简版缺失组件。
- Windows主控机JDK安装与配置
跳过
-
Linux从机JDK安装与配置
-
上传与解压:
# 用scp或FTP将jdk压缩包上传至Linux从机/tmp目录 # 示例(Windows CMD执行scp命令,需Linux开启SSH服务) # scp jdk-8u221-linux-x64.tar.gz root@192.168.1.101:/tmp # 登录Linux从机,创建JDK安装目录并解压 mkdir -p /usr/local/java tar -zxvf /tmp/jdk-8u221-linux-x64.tar.gz -C /usr/local/java/ # 解压后路径:/usr/local/java/jdk1.8.0_221 -
配置环境变量:
vi /etc/profile # 在文件末尾添加以下内容 export JAVA_HOME=/usr/local/java/jdk1.8.0_221 export JRE_HOME=$JAVA_HOME/jre export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 使配置生效 source /etc/profile -
验证:输入
java -version,输出与Windows主控机一致的版本信息即成功。
(二)JMeter 5.1.1安装与配置(Windows拷贝至Linux)
为确保JMeter版本绝对一致,强制推荐从Windows主控机拷贝压缩包至所有Linux从机,避免分别下载导致的文件差异,步骤如下:
-
Windows主控机JMeter配置
-
下载与解压:访问Apache JMeter历史版本页面(https://archive.apache.org/dist/jmeter/binaries/),下载
apache-jmeter-5.1.1.tgz,解压至D:/apache-jmeter-5.1.1(路径无中文、空格)。 -
环境变量配置:新建系统变量
JMETER_HOME,值为D:/apache-jmeter-5.1.1,编辑Path变量新增%JMETER_HOME%\bin,配置后可在任意CMD窗口执行JMeter命令(非必需但推荐,提升操作效率)。 -
验证:CMD输入
jmeter -v,输出“Apache JMeter 5.1.1”即成功。 -
从Windows拷贝JMeter至Linux从机
-
拷贝压缩包:
# Windows CMD进入JMeter压缩包所在目录(若已解压,可重新打包或直接拷贝解压后的目录) # 方式1:拷贝压缩包(推荐,传输体积小) scp apache-jmeter-5.1.1.tgz root@192.168.1.101:/tmp # 方式2:直接拷贝解压后的目录(适合已配置好插件的场景) scp -r D:/apache-jmeter-5.1.1 root@192.168.1.101:/tmp -
Linux从机解压与环境配置:
tar -zxvf /tmp/apache-jmeter-5.1.1.tgz -C /usr/local/ # 重命名为简洁目录(统一路径,便于配置) mv /usr/local/apache-jmeter-5.1.1 /usr/local/jmeter # 配置JMETER_HOME环境变量(全局生效) echo "export JMETER_HOME=/usr/local/jmeter" >> /etc/profile echo "export PATH=\$PATH:\$JMETER_HOME/bin" >> /etc/profile source /etc/profile # 若直接拷贝了解压目录,执行权限赋值与环境配置 chmod -R 755 /usr/local/jmeter/ echo "export JMETER_HOME=/usr/local/jmeter" >> /etc/profile echo "export PATH=\$PATH:\$JMETER_HOME/bin" >> /etc/profile source /etc/profile # 验证版本(配置环境变量后可直接执行jmeter命令) jmeter -v
(三)分布式核心配置(跨系统适配)
- Linux从机配置(JMeter 5.1.1专属)
# 进入JMeter bin目录
cd /usr/local/jmeter/bin
# 编辑jmeter.properties文件
vi jmeter.properties
# 修改以下核心参数(其余参数默认)
server_port=1099 # 监听端口,与主控机一致
server.rmi.localport=50000 # 固定RMI端口,避免冲突
server.rmi.ssl.disable=true # 关闭SSL,简化跨系统通信
server.rmi.ssl.allow=192.168.1.100 # 允许Windows主控机IP连接(替换为实际IP)
server.rmi.serverhostname=192.168.1.101 # 绑定本机IP(替换为Linux从机实际IP)
# 后台启动从机服务
nohup ./jmeter-server
# 验证启动:查看进程
ps -ef | grep jmeter
启动成功后,日志会显示“Server started on host 192.168.1.101, port 1099”。
-
Windows主控机配置
-
进入
D:/apache-jmeter-5.1.1/bin,用记事本打开jmeter.properties,修改以下参数:remote_hosts=192.168.1.101:1099,192.168.1.102:1099 # Linux从机列表(替换为实际IP) server.rmi.ssl.disable=true # 与从机保持一致,关闭SSL client.rmi.localport=50001 # 主控机RMI端口,避免冲突 remote_hosts.execute_on_master=false # 禁止主控机执行测试,仅分发任务 -
启动JMeter:双击
jmeter.bat,加载测试计划即可。
(四)测试执行与验证
-
界面化执行(调试):JMeter顶部【运行】→【远程启动】,选择对应Linux从机IP即可,结果实时回传至主控机。
-
命令行执行(推荐):
cd D:/apache-jmeter-5.1.1/bin jmeter -n -t 测试计划.jmx -l 结果文件.jtl -r -X # -r启动所有从机,-X测试后停止从机
三、场景2:主控机Linux + 从机Linux(同系统架构)
本场景适合全服务器部署,稳定性更强,核心要求所有节点(主控+从机)统一JMeter安装目录为/usr/local/jmeter,简化路径适配与文件分发操作。
(一)JDK 1.8.0_221安装与配置(全Linux节点统一)
所有Linux节点(主控+从机)执行相同操作,确保JDK环境一致:
# 1. 上传jdk-8u221-linux-x64.tar.gz至/tmp目录(主控机下载后分发至从机)
# 主控机分发命令:scp /tmp/jdk-8u221-linux-x64.tar.gz root@192.168.1.102:/tmp
# 2. 解压与配置(所有节点执行)
mkdir -p /usr/local/java
tar -zxvf /tmp/jdk-8u221-linux-x64.tar.gz -C /usr/local/java/
# 3. 配置环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
# 4. 验证
java -version # 输出1.8.0_221即成功
(二)JMeter 5.1.1安装与配置(统一目录:/usr/local/jmeter)
- 主控机Linux JMeter部署
# 1. 下载JMeter 5.1.1压缩包
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.1.tgz -P /tmp
# 2. 解压至统一目录/usr/local/jmeter
tar -zxvf /tmp/apache-jmeter-5.1.1.tgz -C /usr/local/
mv /usr/local/apache-jmeter-5.1.1 /usr/local/jmeter
# 3. 配置JMETER_HOME环境变量(全局生效,所有用户可使用)
echo "export JMETER_HOME=/usr/local/jmeter" >> /etc/profile
echo "export PATH=\$PATH:\$JMETER_HOME/bin" >> /etc/profile
source /etc/profile
# 4. 赋予执行权限
chmod -R 755 \$JMETER_HOME/
# 5. 验证(配置后可直接执行jmeter命令,无需输入完整路径)
jmeter -v
- 分发JMeter至所有Linux从机(保持目录统一)
主控机通过scp分发已配置好的JMeter目录至从机,确保所有节点目录、文件完全一致:
# 主控机执行分发命令(从机需提前创建/usr/local目录)
scp -r /usr/local/jmeter root@192.168.1.102:/usr/local/
# 从机配置JMETER_HOME环境变量(全局生效)
echo "export JMETER_HOME=/usr/local/jmeter" >> /etc/profile
echo "export PATH=\$PATH:\$JMETER_HOME/bin" >> /etc/profile
source /etc/profile
# 从机验证目录、权限与环境变量
ls /usr/local/jmeter # 确认目录存在
chmod -R 755 \$JMETER_HOME/ # 若权限异常,重新赋值
jmeter -v # 验证环境变量配置成功
(三)分布式核心配置(同系统优化)
- 所有Linux从机配置
# 利用JMETER_HOME环境变量进入bin目录(无需输入完整路径)
cd \$JMETER_HOME/bin
# 编辑jmeter.properties
vi jmeter.properties
# 修改核心参数
server_port=1099
server.rmi.localport=50000
server.rmi.ssl.disable=true
server.rmi.ssl.allow=192.168.1.100 # 主控机Linux IP(替换为实际IP)
server.rmi.serverhostname=192.168.1.102 # 本机IP(替换为从机实际IP)
# 后台启动服务
nohup ./jmeter-server &
# 验证启动:查看进程
ps -ef | grep jmeter
- 主控机Linux配置
# 利用JMETER_HOME环境变量进入bin目录
cd \$JMETER_HOME/bin
# 编辑jmeter.properties
vi jmeter.properties
# 修改参数
remote_hosts=192.168.1.102:1099,192.168.1.103:1099 # 从机列表
server.rmi.ssl.disable=true
client.rmi.localport=50001
remote_hosts.execute_on_master=false
(四)测试执行与验证
# 利用JMETER_HOME简化命令,主控机执行命令模式测试
jmeter -n -t \$JMETER_HOME/testplans/测试计划.jmx -l \$JMETER_HOME/results/result.jtl -r -X
# 生成HTML报告(报告目录需为空)
jmeter -g \$JMETER_HOME/results/result.jtl -o \$JMETER_HOME/reports/
四、双场景通用注意事项
- 版本与文件一致性:场景1必须从Windows拷贝JMeter包,场景2从主控机分发JMeter目录,严禁各节点单独下载,避免版本或文件差异导致通信失败。
- 端口与防火墙:所有节点开放1099(监听端口)、50000(RMI端口)、50001(主控机RMI端口),或直接关闭防火墙(测试环境);Linux节点需临时关闭SELinux(
setenforce 0)。 - 目录与权限:场景2严格遵守
/usr/local/jmeter统一目录,所有节点需配置JMETER_HOME并指向对应目录;权限统一设为755,同时确保环境变量配置后执行source /etc/profile生效,避免因权限或环境变量问题导致命令执行失败。 - JMeter 5.1.1专属配置:所有Linux节点必须配置
server.rmi.serverhostname绑定本机IP,否则默认使用回环地址,主控机无法识别。 - 资源监控:测试期间通过
top命令监控Linux节点CPU、内存占用,调整JVM堆内存(编辑/usr/local/jmeter/bin/jmeter.sh,设置HEAP="-Xms1g -Xmx2g")。 - 结果完整性:测试前清空结果目录与缓存,避免残留数据影响分析;场景1结果文件存储在Windows主控机,场景2统一存储在主控机Linux的
/usr/local/jmeter/results目录。

浙公网安备 33010602011771号