一、前提:
1、最近在做一下压测,但是单台服务器的CPU,内存可能不够支撑压测的项目,这时候,我们可以使用Jmeter分布式压测。
2、本次使用的环境:
- 1台服务器做master(调度器)
- 5台服务器做slave (执行器)
二、原理
1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)可以理解成压力机。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,启动jmeter-server.bat(windows)
或者sh jmeter-server.sh
三、步骤
3.1前提:
- 保证几台服务器用的统一版本的jmeter
- 保证在同一个局域网(可以ping同)
- 报错或者,conncetion timed(关闭防火墙)
3.2 slave (压力机)配置,这边以服务器windows
- 打开jmeter->bin->jmeter.properties 找到server.port 去掉注解,开启1099远程端口,端口号可以自己配置的,默认1099
2.保存jmeter.properties
3.启动jmeter-server.bat (windows)下面
4.有几台压力机,就同样配置一下,启动server即可
3.3 控制机器的配置
- 打开jmeter->bin->jmeter.properties 找到remote_hosts,吧压机机的ip加上去,中间用,隔开,如果自定义端口,加上端口号,默认是1099端口号;
2.保存,并且启动jmeter.bat(也可以命令行执行,减少CPU,内存消耗)
四、压测
- 准备好压测脚本,我这边场景是同时并发10000个线程,测试nginx的承受能力;
- 运行-远程全部启动-同时并发5台slave机器,右上角有并发数,绿色的时候是启动的状态;
五、补充
- 第一次搞得时候,很多不是同一网段,出现一些常出现的错误
- 例如出现以下以下错误的时候,首先要检查是否在同一个网段里面,jmeter是否是同一个版本,然后防火墙是否关闭了,最后端口号是否正确
- 分布式并发的时候之前用5.0的版本总是报错,个人觉得可能是版本号太高的原因,适当的降低下jmeter版本号