一、分布式执行原理
- jmeter分布式压测时,选择其中一台作为调度机(master),其他机器做为执行机(slave)
- 执行时,调度机(master)会吧脚本发送到没一台执行机(slave)上,执行机(slave)拿到脚本后就开始执行,执行机(slave)执行时不需要启动GUI,通过命令行模式执行
- 执行完成后,执行机(slave)会把结果回传给调度机(master),调度机(master)会收集所有执行机(skave)的信息
二、分布式执行逻辑
图2.1
- 执行机机首先启动Agent程序(运行jmeter-server)
- 调度机连接上远程负载机(修改配置文件,会自动连接)
- 调度机发送指令(脚本及启动命令)启动线程(参数化文件或依赖包需要手动拷贝到每个执行机上)
三、jmeter分布式部署
3.1前提条件:
- 关闭防火墙如图3.1-1所示:
- 所有客户端在同一个子网里
- 内网环境:服务端也和客户端在同一个子网里面
- 外网环境:压力测试瓶颈大多都在带宽上,需要保证压力机带宽要比服务器的带宽高,不然压力上不去
- 各个机器在相同的目录下安装相同版本的jmeter
- 需要所有jmeter都设置好ssl for rmi(jmeter4.0以后版本需要)
- 各个机器在相同目录下安装相同版本的JDK
- 如果脚本涉及读取外部参数化文件(csv),需要将文件上传每个执行机(slave)上
图3.1-1
3.2调度机(master)配置
3.2.1配置jmeter环境变量
- 系统变量:新建变量名:JMETER_HOME/变量值:(安装路径)D:\MyDownloads\apache-jmeter-5.2.1
- 系统变量:编辑变量值(CLASSPATH):新增%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;
- 系统变量:编辑变量值(PATH):新增D:\MyDownloads\apache-jmeter-5.2.1\bin
3.2.2修改jmeter.properties
在jmeter.properties文件中新增remote_host配置,配置是执行机(slave)主机的IP(WIN+R→cmd进入终端,通过ipconfig命令查看本机ip,remote_host=本机ip)端口号(默认端口为1099,可自定义)多个执行机以逗号,分割。如下图3.2-1所示:
图3.2.2-1
3.2.3在jmeter.bat文件中新增set_rmi_host=-Djava.rmi.server.hostname=本机ip,如下图3.2.3-1所示: