Jmeter分布式压测介绍
在工作中使用jmeter做大并发压力测试的场景下,单机受限内存、CPU、网络IO,会出现服务器压力还没有上去,但是压测服务器已经由于模拟的压力太大死机了。为了让jmeter工具提供更强大的负载能力,jmeter提供了多台机器同时产生负载的机制,下面是架构图。

原理:比如我在jmeter server配置线程数为10,循环次数为100,也就是会对测试服务器发起1000次请求,我有3台agent服务器,如果我在server端选择远程启动压力测试,那么每台agent都会对测试服务器发起10*100次请求,那么这次压力测试产生的请求就是10*100*3=3000次。如果对原理不是很明白,看完下面的操作之后就会理解了。
Jmeter分布式压测环境搭建
搭建前说明
服务器环境说明:做性能测试最好申请单独的压力机
server端:10.0.7.19,agent端:10.0.7.19,10.0.7.11
分布式环境压力服务器要求:
- 需要server(控制机)和agent(压力机),agent搭建在linux(centos 或者Ubuntu)服务器环境下,server搭建在windows(mac)环境下。
- 压力测试瓶颈大都在带宽上面,需要保证压力机的带宽要比服务器的带宽高,不然压力上不去。
- 需要保证agent和server都在一个网段中,且在多网卡环境需要保证启动的网卡都在一个网段。
- 需要保证server和agent之间的时间同步。
- 关闭防火墙。
重点master和slave机器必须在同一网段,同一网段,同一网段
背景:
XX同学使用A市的机器作为jmeter控制机,B市的机器作为jmeter执行机,通过VPN访问。控制机能访问执行机,但是执行机不能访问控制机。
调研过程:
1.jmeter分布式部署的官方文档中说明,部署jmeter的服务器如果是内网的话必须在相同网段。通过VPN连接虽然网络能通,但并不在相同网段。
2.jmeter控制机通过VPN连接执行机所在的网络,控制机会新增一个外网IP,不过这个IP是虚拟出来的,执行机无法访问。公司的VPN会对虚拟地址进行NAT(网络地址转换),所有地址全部转换成同一个地址,例:192.168.XXX.XXX
,但这个并不是控制机的IP地址。执行机回调转换的地址,也是无法找到控制机的。
3.在控制机的jmeter.bat文件中,可以修改IP地址(例:set rmi_host=-Djava.rmi.server.hostname=192.168.XXX.XXX
)。这种修改是基于电脑本身多网卡多IP的情况,对于我们遇到的这种VPN连接的方式并不适用。
最终结论:控制机和执行机异地跨VPN访问方式不支持,建议部署到相同网段。
分布式环境配置
(1)确保server和agnet安装正确。
(2)Agent启动,并监听1099端口。
在agent机器上打开jmeter/bin/jmeter.properties文件,打开以下注释


启动agent
jmeter-server -Djava.rmi.server.hostname=10.0.7.19 # 此IP为agent机器ip,不要写成server机器ip
(3)在server机器的jmeter安装目录下bin目录下,找到properties文件,修改远程主机选项,添加2个agent服务器的地址。

(4)启动jmeter server,多网卡模式需要指定IP地址启动jmeter -Djava.rmi.server.hostname=10.0.7.19
(5)验证分布式环境是否搭建成功
1、jmeter启动之后在如下选项中,会出现你添加的远程主机列表

2、创建一个请求测试:创建一个访问一猫汽车网的请求,访问次数为10次,配置如下:


直接点击启动,是jmeter server机器发起10次请求,结果如下

远程启动

远程全部启动

如果你的环境在选择全部启动之后,没有报错,且发起请求数量和agent服务器数量一致,说明jmeter分布式压力测试环境搭建成功,可以进行测试了。
在nogui下命令行执行slave
jmeter -n -t ./test.jmx -R 10.27.2.210 -l test.jtl -e -o report_test
-R 指定slave节点ip,-r 全部启动
-l 生成测试结果说明文件;-j 生成日志文件; -e -o 生成HTML目录report_test







Comments | NOTHING