Jmeter分布式压测简介
在工作中使用jmeter做大并发压力测试的场景下,单机受限内存、CPU、网络IO,会出现服务器压力还没有上去,但是压测服务器已经由于模拟的压力太大死机了。
为了让jmeter工具提供更强大的负载能力,jmeter提供了多台机器同时产生负载的机制,下面是架构图。
安装部署步骤
1、在master和slaves机器上分别按照相同版本的jdk和jmeter
2、在master机器上
①修改配置文件,进入jmeter/bin目录下
vim jmeter.properties
remote_hosts=10.162.8.101:8899,10.162.10.180:8899(slaves机器的ip和端口)
server.rmi.ssl.disable=true(禁用ssl)
如果master即作为master也作为slaves,同样添加即可,这里配置压力机A和压力机B
备注:remote_hosts一个IP一台机子,端口和IP根据自己的情况而定
②然后启动jmeter服务
./jmeter-server(linux)
jmeter-server.bat(windows)
③检查是否启动成功
ps -ef|grep jmeter-server
3、在slaves机器上
①修改配置文件,进入jmeter/bin目录下
vim jmeter.properties
remote_hosts=127.0.0.1
server_port=8899
server.rmi.ssl.disable=true(禁用ssl)
②启动jmeter服务
./jmeter-server(linux)
jmeter-server.bat(windows)
③检查是否启动成功
ps -ef|grep jmeter-server
4、分布式执行
GUI模式 :运行——》远程启动、远程启动全部
non-GUO模式:命令行增加-r参数
jmeter -n -t /Users/jack/Desktop/remote.jmx -r -l /Users/jack/Desktop/jtl/result.jtl -e -o /Users/jack/Desktop/result
注意:
①提示:Connection refused to host: 192.168.10.102; nested exception is: java.net.ConnectExcepti
可能是你slave机机子没启动,Windows:双击jmeter-server.bat 或者 linux: ./jmeter-server,
②master机作为压力机,除配置ip端口外,master机器对应的jmeter-server.bat(windows)也需要打开
③jmx脚本文件不需要手动拷贝到Slave机器,master机器会自动分发
④如果使用csv进行参数化,则需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
总样本数 = 线程数 * 循环次数 * 执行机总数
脚本编写实例
示例接口:
POST /bff-app/v1/workshop/diys-list
Body入参:
{"changeSortType":false,"effectCode":[57,58,59,60,61,62,1,2,3,4,6,7,8,9,10,11,12,19,20,21,22,23,15,13,14,0,40,41,44,45,42,43,63,64,65,66],"sortType":1,"key":"","view":0,"transaction":"1654672279798"}
设置线程数为10,循环次数为1,也就是单台机器请求10次,总共请求20次(单台线程10 X 2)
测试结果:
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
只要心中燃起希望的火焰,就能超越困难,创造不可能。拥抱挑战,勇往直前,你一定会迸发出无限的力量,让梦想绽放耀眼光芒。坚持奋斗,谱写属于你的辉煌篇章!
只有经历一路艰辛,才能品味到成功的甜蜜;只有付出汗水和泪水,才能让梦想绽放光芒。坚持奋斗,永不言弃,你将成为那个闪耀的人。
只有敢于挑战自我,才能超越自己的极限;只有坚持不懈,才能追求无尽可能;只有拼搏不止,才能绽放辉煌人生。奋斗吧,追逐属于你的光芒!