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安装与配置(跨系统统一)

  1. JDK下载

访问Oracle官网历史版本页面(需注册Oracle账号),下载对应系统安装包,确保所有节点安装包同源:

  • Windows主控机:jdk-8u221-windows-x64.exe(exe格式,便于安装)。
  • Linux从机:jdk-8u221-linux-x64.tar.gz(tar.gz格式,适配服务器环境)。

备注:无法访问Oracle官网可通过国内镜像站下载,务必校验版本为1.8.0_221,避免精简版缺失组件。

  1. Windows主控机JDK安装与配置

跳过

  1. Linux从机JDK安装与配置

  2. 上传与解压:

    # 用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
    
  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,输出与Windows主控机一致的版本信息即成功。

(二)JMeter 5.1.1安装与配置(Windows拷贝至Linux)

为确保JMeter版本绝对一致,强制推荐从Windows主控机拷贝压缩包至所有Linux从机,避免分别下载导致的文件差异,步骤如下:

  1. Windows主控机JMeter配置

  2. 下载与解压:访问Apache JMeter历史版本页面(https://archive.apache.org/dist/jmeter/binaries/),下载apache-jmeter-5.1.1.tgz,解压至D:/apache-jmeter-5.1.1(路径无中文、空格)。

  3. 环境变量配置:新建系统变量JMETER_HOME,值为D:/apache-jmeter-5.1.1,编辑Path变量新增%JMETER_HOME%\bin,配置后可在任意CMD窗口执行JMeter命令(非必需但推荐,提升操作效率)。

  4. 验证:CMD输入jmeter -v,输出“Apache JMeter 5.1.1”即成功。

  5. 从Windows拷贝JMeter至Linux从机

  6. 拷贝压缩包:

    # 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
    
  7. 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
    

(三)分布式核心配置(跨系统适配)

  1. 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”。

  1. Windows主控机配置

  2. 进入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  # 禁止主控机执行测试,仅分发任务
    
  3. 启动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)

  1. 主控机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
  1. 分发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  # 验证环境变量配置成功

(三)分布式核心配置(同系统优化)

  1. 所有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
  1. 主控机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. 版本与文件一致性:场景1必须从Windows拷贝JMeter包,场景2从主控机分发JMeter目录,严禁各节点单独下载,避免版本或文件差异导致通信失败。
  2. 端口与防火墙:所有节点开放1099(监听端口)、50000(RMI端口)、50001(主控机RMI端口),或直接关闭防火墙(测试环境);Linux节点需临时关闭SELinux(setenforce 0)。
  3. 目录与权限:场景2严格遵守/usr/local/jmeter统一目录,所有节点需配置JMETER_HOME并指向对应目录;权限统一设为755,同时确保环境变量配置后执行source /etc/profile生效,避免因权限或环境变量问题导致命令执行失败。
  4. JMeter 5.1.1专属配置:所有Linux节点必须配置server.rmi.serverhostname绑定本机IP,否则默认使用回环地址,主控机无法识别。
  5. 资源监控:测试期间通过top命令监控Linux节点CPU、内存占用,调整JVM堆内存(编辑/usr/local/jmeter/bin/jmeter.sh,设置HEAP="-Xms1g -Xmx2g")。
  6. 结果完整性:测试前清空结果目录与缓存,避免残留数据影响分析;场景1结果文件存储在Windows主控机,场景2统一存储在主控机Linux的/usr/local/jmeter/results目录。
posted @ 2026-01-23 16:14  向闲而过  阅读(5)  评论(0)    收藏  举报