Jmeter搭建分布式压测环境配置及遇到的问题

一、Jmeter分布式执行原理

Jmeter搭建分布式压测环境配置及遇到的问题

二、Window环境下jmeter分布式配置

备注:controller与slave的ip能互相ping通,均关闭防火墙

1、controller与slave的jmeter版本一致

2、controller与slave的jdk已安装,已配置环境变量,且jdk版本在1.8及以上

3、controller与slave的jmeter环境变量(系统变量)
3.1新建环境变量JMETER_HOME=D:\apache-jmeter-5.1.1(jmeter的安装目录)
3.2 Path环境变量,新增值:%JMETER_HOME%\bin;
3.3 CLASSPATH环境变量,新增值:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

4、验证jmeter配置成功,在cmd中输入jmeter –v查看jmeter版本号,输出jmeter版本即表示配置成功

5、controller的jmeter.properties文件配置
server.rmi.ssl.disable=true
remote_hosts=127.0.0.1,192.168.45.60:2099,192.168.45.61:2099(写上所有slave的ip和端口,端口默认是1099)

6、slave的jmeter.properties文件配置
server.rmi.localport=2099
server.rmi.ssl.disable=true
server_port=2099

7、修改完成,先启动slave的Jmeter-server.bat文件,再启动controller的Jmeter-server.bat文件文件

8、执行脚本命令(非gui模式):
jmeter -n -t test.jmx -l result.jtl
result.jtl表示聚合报告的文件名
日志默认存储在jmeter,log中

9、配置完成,启动controler的jmeter.bat文件后,如图所示可以看到配置的所有slave,点击远程启动所有,表示运行所有slave,也可指定运行某个slave
Jmeter搭建分布式压测环境配置及遇到的问题

三、linux环境下jmeter分布式配置(linux下的配置暂未进行验证)

备注:controller能ping通slave的ip
1、controller与slave的jmeter版本一致

2、controller与slave的jdk已安装,已配置环境变量,且jdk版本在1.8及以上

3、controller与slave的jmeter环境变量(系统变量)
3.1 vim /etc/profile编辑环境变量
3.2 添加export PATH=$PATH:/home /apache-jmeter-5.1.1/bin
3.3执行source /etc/profile命令使配置生效
3.4 chmod 777 apache-jmeter-5.1.1,修改文件权限

4、验证jmeter配置成功,输入jmeter –v查看jmeter版本号,输出jmeter版本即表示配置成功

5、controller的jmeter.properties文件配置
server.rmi.ssl.disable=true
remote_hosts=192.168.45.60:2099,192.168.45.61:1099(写上所有slave的ip和端口,端口默认是1099)

6、slave的jmeter.properties文件配置(所有slave均需配置)
server.rmi.localport=2099
server.rmi.ssl.disable=true
server_port=2099

7、修改完成,通过./jmeter-server命令先启动所有slave的Jmeter-server文件,再通过./jmeter-server命令启动controller的Jmeter-server文件
启动成功如图所示:
Jmeter搭建分布式压测环境配置及遇到的问题
8、执行脚本命令
8.1 jmeter -n -t test.jmx -l result.jtl
result.jtl表示聚合报告的文件名
日志默认存储在jmeter,log中
8.2 远程运行指定slave
sh jmeter.sh -n -t test.jmx -R 192.168.45.60,192.168.45.61 -l result.jtl
远程运行所有slave
sh jmeter.sh -n -t test.jmx -r -l result.jtl
备注:jmeter命令参数释义

四、发现的问题及解决办法

1、报错java.rmi.server.ExportException
Jmeter搭建分布式压测环境配置及遇到的问题
解决:修改bin目录下的jmeter.properties文件,” #server.rmi.ssl.disable=false”改为” server.rmi.ssl.disable=true”,注意前面的#号去掉

2、报错java.net.SocetException:Sochet closed
Jmeter搭建分布式压测环境配置及遇到的问题
解决:暂未找到解决办法

3、java.net.BindException: Address already in use: connect
Jmeter搭建分布式压测环境配置及遇到的问题
解决

  1. 打开注册表:ctrl+r 输入regedit
  2. 进入-计算机
    \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 新建DWORD值,name:TcpTimedWaitDelay,value:30(十进制)设置为30秒
  4. 新建DWORD值,name:MaxUserPort,value:65534(十进制)最大连接数65534

4、并发800,1200有如下报错(5开头的错误,是服务器错误)
Jmeter搭建分布式压测环境配置及遇到的问题
Jmeter搭建分布式压测环境配置及遇到的问题
Jmeter搭建分布式压测环境配置及遇到的问题

5、报错信息见截图
Jmeter搭建分布式压测环境配置及遇到的问题
解决:master与slave的jdk版本不一致导致,修改为一致即可

6、报错截图如下
Jmeter搭建分布式压测环境配置及遇到的问题
解决:检查slave机是否有多个ip,改成单ip

7、报错截图如下
Jmeter搭建分布式压测环境配置及遇到的问题

8、报错截图如下
Jmeter搭建分布式压测环境配置及遇到的问题
解决:去掉配置中的端口

9、jmeter_server.bat文件启动后,ip不是本机ip,如图:
Jmeter搭建分布式压测环境配置及遇到的问题
解决:修改bin目录下的system.properties文件中的java.rmi.server.hostname=192.168.45.60为本机ip

10、jmeter的master主机远程启动slave报错:
Jmeter搭建分布式压测环境配置及遇到的问题
或是报错连接被拒绝
解决:查看bin目录下的jmeter_server文件中RMI_HOST_DEF=-Djava.rmi.server.hostname设置的ip是否与system.properties文件中的java.rmi.server.hostname设置的ip是否一致,均为本机ip