前言:大家在使用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的分布式压测的实践中具体配置和小结提示,喜欢的话大家可以收藏哦。

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

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

  1. 性能测试搭建Jmeter分布式压测与监控

    对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容性能提升大 ...

  2. 搭建 Apache Jmeter 分布式压测与监控

    1.前言 对于运维工程师来说,需要对自己维护的服务器性能瓶颈了如指掌,比如我当前的架构每秒并发是多少,我服务器最大能接受的并发是多少,是什么导致我的性能有问题:如果当前架构快达到性能瓶颈了,是横向扩容 ...

  3. 【JMeter】Jmeter分布式压测教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.原理 二.环境搭建 2.1 环境准备 2.2 slave机器配置 2.3 master机器配置 三.脚本及执行 3.1 ...

  4. 接口测试学习——jmeter分布式压测

    分布式压测我理解的就是有一台主控机和几台压力机.主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证.操作步骤如下: 1.启动jmeter自动化工具,界面显示如下图所示. 2.在 ...

  5. Jmeter分布式压测-windows(master控制机)多个linux(slaves负载机)监测服务器资源(cpu、内存等)

    为什么进行jmeter分布式压测? 一.干货解释原因: **原因一:**一台压力机的 Jmeter 默认最大支持 1000 左右的并发用户数(线程数),再大的话,容易造成卡顿.无响应等情况,这是受限于 ...

  6. Jmeter 分布式压测

    一.jmeter分布式压测使用场景 1.当一台jmeter并发数达到瓶颈时,需要多台jmeter一台控制机,多台负载机来进行分布式压测 扩大并发数 2.当测试多台服务器时,需要同时通过多个ip压测同一 ...

  7. jmeter分布式压测原理简介1

    1.什么叫分布式压测? 分布式压测:模拟多台机器向目标机器产生压力,模拟几万用户并发访问 2.分布式压测原理:如下 3.更多补充.....待添加 转载于:https://www.cnblogs.com ...

  8. jmeter 高并发测试报告_Windows下JMeter分布式压测环境搭建

    JMeter是Apache组织开发的开源项目,设计之初用于性能测试,同时它在实现对各种接口的调用方面做得比较成熟,因此,常被用于接口功能测试和性能测试.它能够很好的支持各种常见接口,如HTTP(S). ...

  9. Linux环境下jmeter分布式压测

    一.分布式压测原理 执行过程: 1.启动后,调度机将jmx脚本复制分发给各个执行机; 2.执行机收到脚本后,启动命令执行 3.每台执行机收到的脚本都是一样的,所以最终样本量=线程数 x循环次数 x执行 ...

最新文章

  1. Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
  2. 自动化网络拓扑 包容多设备类型——湖南省高速公路邵怀高速公路建设开发有限公司...
  3. ip分片 tcp分段(转)
  4. 本文把TCP/IP讲绝了!
  5. Mail服务器的搭建(4)----Web方式的邮件系统
  6. php 正则表达式 文档,php的正则表达式完全手册
  7. Apache Shiro权限绕过漏洞 (CVE-2020-11989) 挖掘分析和复现
  8. abaqus结构工程分析及实例详解pdf_“结构非线性、材料拟合、冲击碰撞、钣金/金属成形、顺序耦合、多物理场、有/非参优化”专题...
  9. 34、linux shell,常用函数strace
  10. K2P加USB口刷入Padavan
  11. java斗地主比大小_斗地主算法的设计与实现–如何比较两手牌的大小
  12. Linux系统各发行版镜像下载(借阅)
  13. IP-Guard申请外发流程说明
  14. cf 1538D - Another Problem About Dividing Numbers
  15. Springboot配置多个数据源
  16. Spring实战(第四版)
  17. 读标准02-IEEE1451.5-智能无线传感器标准介绍
  18. jeesite后台快速搭建
  19. python简介以及优点
  20. Qt:鼠标事件(鼠标移动事件、鼠标按下事件、鼠标释放事件、进入窗口区域、离开窗口区域)

热门文章

  1. java的向下转型_Java 向上/向下转型浅析
  2. 通过webSocket实现app产生的数据在网页实时显示
  3. 鱼和熊掌兼得——解密阿里云PCDN如何实现高质量低价格
  4. php上传文件失败的原因,PHP图片文件上传失败的原因
  5. redis——从零开始
  6. 各种格式的文档互相转换(MOBI_to_PDF)
  7. python如何将数组里的数提取出来_python [:3] 实现提取数组中的数
  8. 图像数字识别、数字分割(OCR识别,毕业设计)
  9. 【Alpha】Scrum Meeting 5
  10. MVVM理解 ——(2)数据劫持