性能测试全栈笔记:41.Jmeter分布式压测-执行
上一章学习了Jmeter基准压测,本章学习Jmeter分布式压测
根据服务器处理能力,进行逐步加压:
- 10vu/20vu/30vu/50vu/100vu/150vu
- 100vu/200vu/300vu
引导:cpu到80%/90%,就算再压,也是假压力,没有意义,于是我们可以再加一台压力机,形成分布式压测。
1.为了区别压力机器,我们可以修改Linux各压力机名称:
1)查看压力机名称:hostname
或者uname -n
2)开始修改:vi /etc/hostname
3)修改为:jmeter1
4)再修改:vi /etc/hosts
5)文末修改为:192.168.25.151 jmeter1
(注意中间有空格)
6)重启机器:reboot
或者shutdown -r now
7)再次uname -n
,已经成功改成:jmeter1
2.检查jmeter.properties及jmeter的配置,为了加深印象,请移步这里:性能测试全栈笔记:38.Linux环境中Jmeter压力机部署
3.关机,并复制一台压力机,将第二台压力机取名为jmeter2(操作步骤如上),相关命令:
[root@jmeter2 ~]# vi /etc/hostname
:修改为jmeter2[root@jmeter2 ~]# vi /etc/hosts
:修改为:192.168.25.154 jmeter2[root@jmeter2 ~]# uname -n
下面进行重点配置:
1.每台机器都部署好jmeter环境(完成)
2.如果是java脚本,要将java脚本和lib包放到jmeter中lib/ext目录下(暂未涉及)
3.将jmeter的jmx脚本文件上传到主jmeter自定义位置,参数文件放到每一台压力机器上(目录需相同):压力从哪台机器发,就把脚本放在哪一天,自定义一台为主压力机,如果有csv文件,每台压力机都要放且目录要相同
【将192.168.25.151作为主压力机】,脚本场景:5vu-30s
4.bin目录下修改jmeter.properties文件,将ssl.disable设置为true,并去掉注释:ssl.disable=true
(使ssl证书无效)
server.rmi.ssl.disable=true
5.每台压力机,进入jmeter的bin目录下,都启动nohup ./jmeter-server &
:后台启动jmeter-server服务:
[root@jmeter1 bin]# nohup ./jmeter-server &
[1] 79166
[root@jmeter1 bin]# nohup: 忽略输入并把输出追加到"nohup.out"
6.看一下jmeter server服务有没有启动成功:ps -ef |grep java
,端口:-Dserver_port=1099
,端口号是1099(记住这个端口)
8.在主jmeter的bin目录下,修改jmeter.properties文件,将其中的remote_hosts
修改为两台压力机的ip,remote_hosts=127.0.0.1,192.168.0.102
9.看一下从压力机的端口号:ps -ef |grep java
得到:-Dserver_port=1099 -s -j jmeter-server.log
,服务已启,端口:1099
10.操作第8步,进入主压力机jmeter的bin目录,修改jmeter.properties文件,搜索:/remote
remote_hosts=localhost:1099,192.168.25.154:1099
11.保存并退出::wq!
12.在主jmeter的机器上,执行jmeter -n -t ../20211226-2.jmx -l result.jtl -r(示例,具体目录和路径自定义)
【这里思考一个问题,一台压力机:5个并发,那现在两台压力机呢,是5?还是10?待会看。】
分布式压测开始:[root@jmeter1 bin]# jmeter -n -t ../script/20211226-2.jmx -l ../result/20211226-5vu-30s-2.jtl -r
(不要忘记还有一个-r)
13.压缩一下:[root@jmeter1 result]# zip 20211226-5vu-30s-2.zip 20211226-5vu-30s-2.jtl
14.下载刚才的压缩文件20211226-5vu-30s-2.zip,解压后将文件放置jmeter脚本中,验证一下刚才思考的问题:
15.结论:分布式压测,并发数=虚拟用户数*压力机数量
小结:
- 一般一台Linux机器200vu没有问题
- 如果是http脚本,在主控机器上有脚本即可
- 如果是java脚本,在每一台机器上都要上传脚本和依赖的jar包