背景:
本地电脑通过Jmeter图形化界面(GUI方式)控制本机及其他远程机器,以它们为压力机,对被测的服务器进行压力测试,并将压测的结果同步到Jmeter图形化界面中,进行分析。
准备:
1、作为压力机的本地电脑和远程机器安装jdk、jmeter,版本要一致,并且配置好环境变量,配置完毕后,执行java -version和jmeter -v进行验证,如果返回了版本信息等内容,说明环境配置ok!
2、远程机器进入jmeter的bin目录下,打开jmeter.properties文件,remote_hosts和server_port保持默认不变即可。
修改下面参数为true,禁用掉。
server.rmi.ssl.disable=true
注意:如果有多台远程压力机,所有远程机器都重复上面的操作:jdk、jmeter、jmeter.properties文件,保持统一。
3、所有远程压力机器上分别执行 jmeter-server -Djava.rmi.server.hostname=压力机的ip地址(ifconfig中可查)
4、进入控制机的jmeter的bin目录下,打开jmeter.properties文件,remote_hosts配置所有远程压力机的ip+端口号,多个压力机之间用英文逗号隔开,如果把控制机也当成压力机使用,则将控制机也添加;server_port保持默认不变即可,保存后即可。
5、控制机(本地机器)上打开Jmeter图形化界面,编写压测脚本,点击菜单中的运行按钮即可看到远程机器清单,选择某个压力机即可在该机器上执行压测脚本,对被测服务器产生压力。
注意:如果把控制机也当成压力机执行脚本,则控制机上也要启动jmeter-server服务,否则会报错连接失败。
演示:设置100个线程,远程启动所有。
运行控制机和压力机的运行server日志如下:
聚合报告显示结果:每个请求执行了200次,上面设置的线程数100,意味着每台机器执行100次,在两台机器上执行,相当于每个请求执行了200次。从这里就可以看出这就是分布式的好处,高并发可以均匀的给每台机器设置一定的负载,加在一起就是总负载。