Jmeter的分布式测试

 一. 分布式测试

分布式应用(distributed application)指的是应用程序分布在不同计算机上,通过网络来共同完成一项任务的工作方式。性能测试当中,负载机的性能会对性能测试的执行产生影响。作为Java应用程序,Jmeter运行时也需要一定的资源,当性能测试的模拟的并发过大时,负载机的CPU,内存等会被大量消耗,经常会出现Java内存溢出的错误,往往导致负载机成为测试瓶颈。Jmeter提供了分布式操作的功能,用户可以通过扩展负载机的方式来解决单台机器负载过大的问题。

二. Jmeter分布式测试模型

 

按照分布式的架构,Jmeter会将一台机器作为master控制机,其他机器作为slave代理机。Master控制机只有一个,slave代理机可以有多个。

Master控制机的任务,是向salve机发送命令,并从slave机接收返回信息,收集测试数据。Master机最终展示的数据,是全部slave机测试数据的集合。Slave机的任务,是执行接收的命令,并向控制机返回测试结果数据。Slave机是通过命令行执行任务的,所以,不需要启动Jmeter GUI操作界面。

三. Jmeter分布式运行前的配置

首先对Slave机进行配置:

Step1:安装JDK,Jmeter,配置好环境变量。

Step2:通过“ipconfig”命令,查看IP地址。

 

机器上可能有多个网卡,一般我们都是在内网环境下执行测试的,所以我们需要的是内网IP,不要选错了。

Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=10.27.33.11:1099,1099是默认端口号,可根据需要改成其他端口。

 

Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

 

其他slave机依照此步骤一样配置就好。注意,各机器之间,JDK,Jmeter版本最好保持一致,文件放置的目录也最好保持一致。不过有了Docker,slave机都是从master机复制过来的,所以,一般问题不大。

Master机的配置:

前2步和slave机前2步一样。

Step1:安装JDK,Jmeter,配置好环境变量。

Step2:通过“ipconfig”命令,查看IP地址。

Step3:打开${Jmeter_PATH}/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”, 在master机上,把所有slave机的IP:端口都写在这里,并用逗号分隔。

 

Step4:启动${Jmeter_PATH}/bin/jmeter-server.bat服务。

配置完毕。在执行前,将测试需要的jmx文件和相关的csv,txt等数据文件放置在各机器上,路径注意要一致。然后,在master机上打开Jmeter,从Run->Remote Start可以看到所有的slave机(IP:端口)。

 

设置线程生产数据,点击Run->Remote Start->Remote Start All。

 

执行结束,因为执行了3台负载机,所以最后的samples数量是10x3=30.

 

Slave机的控制台信息如图。

 

四. 下面是几个坑,有很多是网上各位前辈总结的,一起列在这里。

(1).环境及数据问题。

前面也提过了,尽量保持各机器之间环境一致,jmx和数据文件放置的目录一致。否则运行时,master控制机会接收不到返回数据。

(2).机器之间出现拒绝连接的Exception

“Connection refused xxxx”,出现这种情况,可能是你的防火墙未关闭;又或者是机器不在一个网段内,最好都用内网IP。

(3).自定义端口

如果用的是自定义端口,找到jmeter.properties文件,修改如下两个配置项,比如改为1089:

server_port=1089

server.rmi.localport=1089

修改后,重启jmeter-sever.bat即可。

(4).jmeter-sever.bat启动后,IP不是内网

这个是多网卡造成的,很多时候启动的是公网的IP,而我们配置的是内网。

修改jmeter-sever.bat,

 

修改jmeter.bat:

新增set rmi_host=-Djava.rmi.server.hostname=本机ip;

修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% % rmi_host%

 

修改后,重启jmeter-sever.bat

原文地址:https://www.cnblogs.com/xbxblog/p/9567603.html