为什么要进行分布式;因为在单台机进行Jmeter性能测试的时候,单台机(配置)的并发是很难超过1000的;当然我的电脑勉强可以,但是CPU和内存会满负荷的运行;那么要进行上万、十万级别的并发的时候,显然一台机器是搞不定的,我们这就需要用到分布式了;
远程测试的原理:
单个jmeter 客户端就可以控制多个远程的jmeter服务器,使它们同步的对服务器进行压力测试;并返回数据到master*(调度机)中;
Note: The same test plan is run by all the servers. JMeter does not distribute the load between servers, each runs the full test plan.
这个是官方对远程测试的说明;大概意思是说,所有的服务器都运行相同的测试计划,jmeter不会在slave之间分配请求负载,每个服务器都会运行完整的测试计划。
这个就是对远程测试的原理进行了简单的讲解;之后我们来动手完成一次远程测试吧;
步骤0:配置节点
在slave中安装Jmeter,在此建议最好与master(调度机)的Jmeter版本一致;然后slave需要修改配置文件:jmeter.properties
#修改为本机的IP地址
remote_hosts=192.168.30.190
#去掉注释和设置端口
server_port=1099
#当然,因为是使用RMI动态端口,所以要开启指定的端口,那么需要设置server.rmi.localport;
server.rmi.localport=1099
注意:如果slave是双网卡的,那么你就要在jmeter-server文件中添加
RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.30.190
并且master中也要在jmeter.bat中指定网卡IP
增加配置项:set rmi_host=-Djava.rmi.server.hostname=192.168.30.190
修改配置项:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%
步骤1:启动server
JMETER_HOME/bin/jmeter-server (unix) or
JMETER_HOME/bin/jmeter-server.bat (windows) script.
slave启动jmeter-server.bat,以下是表示启动成功;
步骤2:配置客户端
在JMETER_HOME/bin/jmeter.properties中找到"remote_hosts",
#添加slave的IP地址和端口,如果有多个slave那么就用英文逗号隔开;
remote_hosts=192.168.22.190:1099
#remote_hosts=192.168.30.190:1099,192.168.30.136:1099,192.168.22.101:1099
步骤3:启动master的GUI-Jmeter
点击运行-远程启动,就会出现slave的IP和端口;
好了以上就完成分布式的配置了,如果需要多台slave,重复步骤0~步骤2就可以了;
注意事项:
1.master和slave最好在同一个局域网内,会减少网络对测试结果的影响,而不会影响应用程序服务器本身的性能;
2.master和slave需要关闭防火墙;
3.jdk版本和jmeter版本推荐一致;