为什么要做联机负载?
Jmeter本身的性能决定了在使用jmeter进行性能测试的过程中,单台机器能够模拟的虚拟用户数不会太多(1000用户)。如果要进行大量用户的负载测试,则需要进行联机负载(分布式负载)。
基础概念:
1.主控制机:存放JMeter脚本的机器叫做主控制机
2.负载机:被连接并用来运行脚本的机器叫做负载机
前提条件:
·保证在控制机和负载机上都能够运行Jmeter。(jmeter和jdk版本需一致)
·要保证控制机和负载机、负载机和被测服务器之间的网络能够通信。(同一个局域网内)
操作步骤:
1)在控制机上,找到jmeter所在目录中的bin文件夹下的jmeter.properties文件,找到对应的属性为:remote_hosts
示例:
# Remote Hosts - comma delimited
remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010
remote_hosts=192.168.100.41:8000,192.168.100.200:1099
表示添加了两台负载机:
一台是:192.168.100.41:8000,
一台是:192.168.100.200:1099
2)在负载机上启动Jmeter-server.bat(windows)/Jmeter-server(linux),或者通过命令Jmeter -s来启动。
PS:Jmeter-server的默认服务端口是1099,如果在负载机上该端口被占用,则我们可以通过修改负载机上的Jmeter的配置文件jmeter.properties中的属性server_port来指定服务端口。
示例:
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=8000
将Jmeter-server的服务端口改为了8000.
PS:改完之后重启才会生效
3)重启控制机上的Jmeter
4)控制机上,打开需要运行的脚本,设置好线程组属性,就可以通过远程启动or远程全部启动的方式来运行脚本
·远程启动:选中一台负载机来运行脚本。
·远程全部启动:所有负载机都同时运行脚本。
注意事项:
·联机负载时,要保证控制机和负载机的Jmeter的版本、JAVA环境的一致性。
·联机负载时,脚本的运行环境是负载机的环境。
一般就要保证控制机和负载机的环境的一致性。
对于脚本中用到的第三方文件,包括jar包和参数文件等。
1)对于jar包,只需要保证第三方jar包同时在控制机和负载机的jmeter的lib目录下存在即可。
2)对于第三方文件,比如参数文件,也要求在控制机和负载机都有。
如果是使用的绝对路径,则要保证第三方文件在控制机和负载机的绝对路径的一致。
如果使用相对路径,则要注意在控制机和负载机上的当前路径的区别:
在控制机(本地)上时,当前路径是脚本所在文件夹。
在负载机(远程)上时,当前路径是Jmeter的bin目录。
·联机负载时,远程全部启动时,当前的测试计划是分别、独立、同步在每一台负载机上执行的。这就意味着此时对服务器造成的实际压力(RL)和测试计划所设置的压力(DL)是不一样的,是和负载机的数量(N)有关的。RL=DL*N