Jmeter分布式压测介绍、原理及实操(一台master-windows控制机,三台slaves-linux负载机)

前言:大家在使用jmeter压测过程中,可能会度遇到内存溢出的错误,这是为什么呢?
因为jmeter是java写的应用,java应用jvm堆内存heap受负载机硬件限制,虽然我们可以调整堆内存大小,但是单机无法支撑数以万计大并发,此时,需要多个负载机进行分压测试,这样性能瓶颈就不会受负载机硬件限制了。

一、简介:讲解什么是分布式压测

  • 普通压测:单台机可以对目标机器产生的压力比较小,受限因素包括CPU,网络,IO等
  • 分布式压测:利用多台机器向目标机器产生压力,模拟几万用户并发访问

二、简介:讲解Jmeter分布式压测原理

  • 控制机的节点叫master,其他产生压力的机器叫slaves ,即负载机

  • master会把压测脚本发送到 slaves上面

  • 执行的时候,slaves上只需要把jmeter-server打开就可以了,不用启动jmeter

  • 结束后,slaves会把压测数据回传给master,然后master汇总输出报告和配置详情

    注意:必须保证master和slaves安装相同的jdk和jmeter
    前提:master的jmeter可以正常打开使用,master和slaves处于同一个局域网下,相互之间可以ping通

官网原理图:
在这里插入图片描述
在这里插入图片描述

1、将master的jmeter完整复制一份到slaves,master安装的jdk版本也复制一份到slaves

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一定要保证master和slaves安装相同的jdk和jmeter,master和slaves处于同一个局域网下,相互之间可以ping通,jmeter的配置和jdk的安装请自行百度或者看我写的jmeter其他相关的文章

2、看master是否能够ping通slaves

在这里插入图片描述

3、看slaves是否能够ping通master

在这里插入图片描述
如果相互之间无法ping通,请检查防火墙是否处于开启状态,此时请把防火墙关闭或者配置链接策略

4、复制slaves的IP地址到master jmeter的安装目录下,放到master的bin/jmeter.properties的remote_hosts后面

在这里插入图片描述
remote_hosts:配置slave的ip和端口号
server_port:服务端口号可以自定义也可以默认,但是必须和slave保持一致

在这里插入图片描述

server.rmi.ssl.disable=true:将这个设置成true,是为了保证ssl传输没有问题,不然会报错
在这里插入图片描述

5、进入slaves配置jmeter下的bin目录下的jmeter.properties,用vim命令打开

remote_hosts:保持默认127.0.0.1即可
server_port:服务端口号可以自定义也可以默认,但是必须和slave保持一致
在这里插入图片描述
server.rmi.ssl.disable=true:将这个设置成true,是为了保证ssl传输没有问题,不然会报错
在这里插入图片描述
chmod 755 -R apache-jmeter-5.2.1:赋予jmeter目录读写执行权限
在这里插入图片描述

6、启动 slaves jmeter安装目录下的bin目录下的jmeter-server这个文件,目的是让master能够监听到

sh jmeter-server:启动监听
在这里插入图片描述
在这里插入图片描述
如果启动出现An error occurred: Cannot start. localhost is a loopback address报错
此时可以指定启动ip:sh jmeter-server -Djava.rmi.server.hostname=x.x.x.x
在这里插入图片描述

7、master打开jmeter建立好压测脚本,后先简单自测一下看是否ok,然后点击菜单栏的运行、远程启动所有 ,这时候master会把命令分发给slaves,让slaves去执行脚本,实现原理是slaves开了jmeter-server这个文件,master会发命令到这个文件,slaves收到会执行master发的脚本命令并实时的把结果文件传到master的聚合报告中

注意:slaves不需要上传压测脚本,压测脚本会自动发到slaves负载机上;但是,如果脚本中涉及从外部读取的csv文件,那该文件就需要上传到各个slaves负载机上,且要统一目录
在这里插入图片描述
默认10个线程
在这里插入图片描述
slaves执行命令运行
在这里插入图片描述
查看结果树30个请求
在这里插入图片描述
聚合报告30个请求
在这里插入图片描述
压测完毕远程退出和远程关闭所有的slaves jmeter-server服务
在这里插入图片描述

三、友情提示

1、若是脚本中设置的并发线程数是10,采用3台slaves机器去施加压力,那么对于服务端来说,此时的并发线程数是30。
2、为了减少出错的可能性,最好按照如下Jmeter 分布式要求:
3、各个机器在相同目录下安装相同版本的jdk;
4、各个机器在相同的目录下安装相同版本的jmeter;
5、配置/etc/hosts的IP和hostname的映射。
6、修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。
7、发起压测可以采用命令启动,在master机器上进入jmeter的bin目录下,执行如下命令:./jmeter –n –r –t 压测脚本绝对路径,要提前结束压测请ctrl+c,若要重新启动分布式压测,请重新启动slaves
8、若想动态的挑选部分slaves压测,可以采用命令行选项的方式,即在master机器运行命令的时候添加 -R ip:port,ip:port的方法

以上就是jmeter的分布式压测的实践中具体配置和小结提示,喜欢的话大家可以收藏哦。

四、疑问解答与加群学习交流

在这里插入图片描述

  • 7
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要进行JMeter分布式压测,您需要进行以下步骤: 1. 在控制机Master)上安装JMeter,并确保JMeter版本与执行Slave)上安装的版本相同。 2. 在执行Slave)上安装JMeter,并确保JMeter版本与控制机Master)上安装的版本相同。 3. 在所有器上设置JAVA_HOME环境变量。 4. 在控制机Master)上,创建一个测试计划,并将所有的测试元素添加到测试计划中。 5. 在控制机Master)上,选择“运行” -> “远程开始” -> “分布式测试”。 6. 在弹出的“分布式测试”对话框中,选择“添加”按钮,添加执行Slave)的IP地址和端口号(默认端口号为1099)。 7. 将测试计划文件复制到所有执行Slave)上。 8. 在所有执行Slave)上,启动JMeter Server,并使用以下命令: ``` jmeter-server -Djava.rmi.server.hostname=<slave-ip-address> ``` 其中,<slave-ip-address>是执行Slave)的IP地址。 9. 在控制机Master)上,启动JMeter并开始测试。 注意事项: 1. 执行Slave)的数量应该根据测试的需要而定,但是过多的执行Slave)可能会导致性能下降。 2. 执行Slave)的硬件配置应该与控制机Master)的硬件配置相同或更好。 3. 在测试过程中,应该监控执行Slave)的资源使用情况,避免资源过度消耗导致压测失败。 4. 在测试完成后,应该关闭所有执行Slave)的JMeter Server。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李先森&Mr.Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值