参考资料
https://www.cnblogs.com/beginner-boy/p/7836276.html
1.Jmeter分布式执行原理:
1、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。
2、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通过命令行模式来执行的。
3、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。
本文分三个部分:
1、windows下负载机的配置
2、Linux下负载机的配置
3、遇到的问题
********************************************************************************
JMeter分布式执行原理如下图所示:
前提:
在调度机上安装JDK(我们这里使用1.8版本的)+Jmeter(3.3)
参考文档:http://www.cnblogs.com/beginner-boy/p/7707255.html
一、windows下负载机的配置(执行机)
1、在执行机上安装相同版本的JDk和Jmeter(参考调度机的安装)
注意:JDK和Jmeter都要配置环境变量
Jmeter 环境变量的配置:
在系统环境变量中添加:
JMETER_HOME
C:\jmeter\apache-jmeter-3.3\bin
在path系统变量中添加如下配置:
%JMETER_HOME%\bin;
2、在执行机上自定义端口号
1、进入Jmeter的bin目录,找到Jmeter.properties文件,打开该文件修改如下两个配置项,比如修改端口号为:1355(默认端口号为:1099)
server_port=1355
server.rmi.localport=1355
(记得取消注释)
2、启动执行机上的Jmeter-server.bat,如下图,端口号已经修改为:1355
3、在调度机上添加远程的负载机
进入Jmeter的bin目录,找到Jmeter.properties文件,进行如下配置:
4、在调度机上打开,Jmeter,如下图即可启动远程的负载机
5、验证:
启动后如果运行正常,在调度机上可以看到远端负载机的执行结果,如下图:
在执行机上有如下显示:
二、linux下负载机的配置
1、在Linux下安装同调度机相同的JDK和Jmeter版本
JDK环境变量的配置参考如下:http://www.cnblogs.com/beginner-boy/p/7748409.html
Jmeter的环境变量配置,
export PATH=/opt/apache-jmeter-3.3/bin/:$PATH(配置文件位置:/etc/profile)
如下图:
验证:Jmeter -v
2、在执行机上自定义端口号
1、进入Jmeter的bin目录,找到Jmeter.properties文件,打开该文件修改如下两个配置项,比如修改端口号为:1355(默认端口号为:1099)
server_port=1355
server.rmi.localport=1099
2、启动执行机上的Jmeter-server.bat,命令:./jmeter-server -Djava.rmi.server.hostname=192.168.0.199,如下图,端口号已经修改为:1099
3、在调度机上添加远程的负载机
进入Jmeter的bin目录,找到Jmeter.properties文件,进行如下配置:
4、在调度机上打开,Jmeter,如下图即可启动远程的负载机
5、验证:
启动后如果运行正常,在调度机上可以看到远端负载机的执行结果,如下图:
在执行机上有如下显示:
三、错误总结
1、Linux下Jmeter-server启动失败,如下图:
解决办法:在启动Jmeter-server的时候加上如下参数,完成命令如下:
./jmeter-server -Djava.rmi.server.hostname=192.168.0.199
2、调度机报如下错误:
解决办法:
将执行机上的端口设置为固定端口即可(在之前的部署中已经说明如何自定义端口了,参考上文)
3、启动Jmeter报错
解决问题:
在执行机上重新启动Jmeter-server服务(我的测试环境这样是可以解决的,如果你的环境解决不了,请仔细查看执行机上的Jmeter-server.log中的报错信息)
说明:
1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。
来源:https://www.cnblogs.com/zzzao/p/9204137.html