JMeter分布式环境,一台Master,一到多台Slave,Master和Slave可以是同一台机器。
前提条件:
所有机器,包括master和slave的机器:
1.运行相同版本的JMeter
2.使用相同的java版本
3.有基于SSL的RMI的有效密钥库,或者禁用SSL。(本文举例中是采用的禁用SSL)
4.都在一个网络
5.关闭防火墙
三种情形举例:
每种情形按照以下方式配置好之后,需要在slave的机器上启动jmeter-server.bat,在master机器上启动JMeter的界面执行case进行调试。
注意:
slave的机器上可以不放jmeter的脚本,但如果有用到测试数据,就必须把测试数据放到slave机器上去,JMeter中文件的路径得用绝对路径,这点不太方便。
我的想法是如果把JMeter的工程配成Maven工程就可以完美的解决这个问题。
1.Master和Slave是同一台机器
- 修改jmeter.properties
remote_hosts=127.0.0.1:1099
server.rmi.ssl.disable=true (关闭RMI)
2.Master和Slave不是同一台
Master:10.86.16.218
- 修改jmeter.properties (用默认端口1099)
remote_hosts=10.86.16.81:1099,10.86.17.82:1099
server.rmi.ssl.disable=true (关闭RMI)
- 在system.proerties的最后加一行
java.rmi.server.hostname=10.86.16.218
Slave1:10.86.16.81
Slave2:10.86.17.82
- 修改jmeter.properties
server.rmi.ssl.disable=true
- 在system.properties的最后加一行
以Slave1举例,其他Slave也要这么配
java.rmi.server.hostname=10.86.16.81
3.Master和Slave不是同一台
Master:10.86.16.218
- 修改jmeter.properties (用自定义端口,举例:80)
remote_hosts=10.86.16.81:80,10.86.17.82:80
server.rmi.ssl.disable=true (关闭RMI)
- 在system.properties的最后加一行
java.rmi.server.hostname=10.86.16.218
Slave1:10.86.16.81
Slave2:10.86.17.82
- 修改jmeter.properties
server.rmi.ssl.disable=true
server_port=80
- 在system.properties的最后加一行
以Slave1举例,其他Slave也要这么配
java.rmi.server.hostname=10.86.16.81
成功的标志:
1.JMeter Master的界面上,远程启动菜单可以看到配置的所有的slave
3.Slave上jmeter-server.bat启动的控制台没有报错,显示测试的开始和结束
4.Slave上的日志\apache-jmeter-5.2.1\bin\jmeter-server.log可以看到脚本执行的信息,没有报错
5.Master上通过JMeter界面启动远程执行时,结果树可以看到命令成功返回