一台机器的资源总是有限的,如cpu,磁盘,内存,网络等。比如一台机器的极限是只支持1000个并发,但我们现在要测试3000个并发,怎么办呢。总不能又去购买服务器吧。浪费老板金钱。这个时候,我们就要想办法再找3台机器去测。1台主机(也是控制器),3台从机(slave机),这样就可以达到我们的测试要求。jmeter正好有支持分布式压测。原理如下(借用别人画的图):
1. 准备各硬件(机器)资源
因本人目前资源有限,只有两台机器。但还是要模拟3台从机,1台主机的情况,在同一个机器上放置了部署了3个jmeter程序,但每个程序的端口号不同,如此来模拟多台机器(本例只是演示,在公司做测试的时候可千万不要这样做哦)。故如此分配各机器。
1. 192.168.150.181:1099(从机),192.168.150.182:1099(从机),192.168.150.182:1098(从机)
2.192.168.150.182:1100(主机)
2. 修改配置文件
2.1)所有的主机及从机上在 bin\jmeter.properties 中修改两个属性:
server_port=1098
server.rmi.ssl.disable=true (改为true)
2.1)在主机(控制机上)也修改bin\jmeter.properties
如
remote_hosts=192.168.150.181:1099,192.168.150.182:1099,192.168.150.182:1098
3.启动
3.1)在所有的从机上启动文件 bin\jmeter-server.bat.对应的日志文件是它下面的jmeter-server.log
3.2)在主机(控制机)上启动文件bin\jmeter.bat,bin\jmeter.log是它的日志文件。
4.运行
主机启动后有界面。其它从机启动后没有图形界面。
参考以下图进行运行
从机上也有相应的连接开启与断开提示。
5.查看结果
关于jmeter分布式必须要知道的事:
1.jmeter的分布式不是负载均衡。它是把主机上的脚本都在各从机上自动拷贝一份,运行结束后会把各从机的结果自动传到主机上来供查看。比如以上示例。主机上的脚本只有1个请求,设置的线程数也是1.但是运行结束后,查看结果树中共发了3个请求,并且在采样器结果中可以清楚地看到这些请求是从哪个机器发出的。
2.主从机的时间必须同步。
3.各主从机的环境配置要没有问题。特别是JMETER_HOME的配置。
4.主机上要把虚拟网卡禁用。否则会出现从机无法连接主机的问题。