Jmeter压测过程中,由于测试机配置有限,CPU、内存都可能是存在瓶颈。如果使用很大的并发进行测试时,就可能会感到程序比较卡,这时候就无法继续增加压力了。
解决方法:
搭建Jmeter分布式集群,远程启动测试。
步骤如下:
1、在分布式集群中,脚本编辑、控制的机器叫做“client”,实际运行Jmeter测试脚本,负责向被测服务器发请求的机器,称为“server”。网络要求server和client需要网络互通。找几台机器作为 server,然后client和server相互ping彼此的ip地址,如果能ping通,说明网络是ok的。
2、和client一样,server可以是linux系统,也可以是windows系统。
在本文演示中,作为client机器,ip是172.31.132.242。
作为server机器,ip是172.17.3.212。
3、演示中,因为server是linux系统的,我们需要去官网下载linux系统对应的JMeter安装文件,解压即可。
进入安装目录:apache-JMeter-2.13/bin下,启动server端程序,执行:./JMeter-server (windows下启动JMeter-server.bat)
如果server机器有多个ip,启动的时候可以指定一个,如:
./JMeter-server-Djava.rmi.server.hostname=172.17.3.212
配置和启动client端安装目录的bin文件夹下,找到JMeter.properties文件
打开文件,并找到remote_hosts=127.0.0.1这一行,修改为server服务器的列表,如下所示,如果server有多个,那么多个机器地址之间使用英文逗号分隔:
其实,client自己可以同时作为一个server机器,向服务端发送请求(前提是client上也启动了JMeter-server程序),所以也可以把client的ip加上,添加自己只需要写127.0.0.1即可。
如果client有多个ip,也可以在启动的时候指定一个。 如果是windows系统,可以修改jmeter.bat启动脚本写明client这台机器的ip地址即可。
修改完毕后保存,启动Jmeter,打开界面。
执行分布式测试
打开client端的JMeter界面,点击运行-远程启动,里面能看到配置好的server端的机器列表。
此时可以启动一个远程机器,也可以选择下面的“远程全部启动”,同时启动所有的server。 点击后,client端会自动和server端的服务建立连接,下发测试脚本到server端; 等server端的测试全部结束后,会将测试结果汇总到client端,我们在client端配置的监听器就能看到测试结果了。