首先要了解jmeter分布式压测的基础概念:master为统计结果的服务器,slave为各台压力机,如下图所示

一、结论

针对master

1、修改jmeter.properties的client.rmi.localport=61099(值可以是自定义的,默认为0时会随机分配端口)
2、防火墙打开端口61099-61101(范围也可以设大一点,目前源码我只发现了其使用了61010和61011,即配置的client.rmi.localport加1和加2)
3、修改jmeter.properties的server_port=1099(默认是1099,可不修改,需要与slave配置的server_port一致)

针对各slave

1、修改jmeter.properties的server_port=1099(默认是1099,可不修改,需要与master配置的server_port一致)
2、防火墙打开端口1099

二、原理

防火墙会拦截其他服务器对“未开启端口”的访问,但不拦截服务器主动发起“未开启端口”连接到其他服务器

jmeter开启分布式压测步骤
1、运行slave的jmeter-server,此时会监听1099端口(即配置的server_port)
2、运行master的jmeter,此时master会使用socket连接到slave的1099端口

注意:这里master的端口是随机的,但因为是master主动发起连接,所以不需要理会master的防火墙。但slave的1099端口是被动接收的,所以slave的防火墙要开启1099端口
3、master连接salve的1099端口成功后,会打开61010和61011端口(即配置的client.rmi.localport加1和加2),然后告诉salve主动连接这两个端口

注意:这里与2是相反的,master的61010和61011端口是被动接收的,所以master的防火墙要开启61010和61011端口。

问:如果有多个salve呢? 答:即使有多个salve,master依然是给出这两个端口,我猜想是jmeter为了方便统一处理,才不设计成一个端口对应一个salve

问:为什么不只开启61010和61011端口? 答:既然配了61099,jmeter会不会在其他地方用到了61099。虽然我在运行时netstat找不到61099,但稳健起见还是范围设大一点吧
4、master通过61010和61011端口告诉所有slave开启线程和开启测试,slave把测试结果返回给master

jmeter的具体实现(可不看)

步骤2中master连接slave的具体实现:

jmeter会在ClientJMeterEngine的getEngine方法,调用LocateRegistry.getRegistry,new出一个TCPEndpoint对象,然后registry.lookup(name)使用这个TCPEndpoint对象发起tcp连接

步骤3中master获取client.rmi.localport的具体实现

RemoteSampleListenerImpl 加了2 通知slave开启测试和结束测试

RemoteThreadsListenerImpl 加了1 通知slave开启线程和结束线程

jmeter分布式压测对master、slave防火墙配置的更多相关文章

  1. 压力测试(八)-多节点JMeter分布式压测实战

    1.Jmeter4.0分布式压测准备工作 简介:讲解Linux服务器上jmeter进行分布式压测的相关准备工作 1.压测注意事项 the firewalls on the systems are tu ...

  2. JMeter分布式压测实战(2020年清明假期学习笔记)

    一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...

  3. jmeter 分布式压测(windows)

    单台压测机通常会遇到客户端瓶颈,受制于客户机的性能.可能由于网络带宽,CPU,内存的限制不能给到服务器足够的压力,这个时候你就需要用到分布式方案来解决客户机的瓶颈,压测的结果也会更加接近于真实情况. ...

  4. JMeter——分布式压测

    一.Jmeter4.0分布式压测准备工作 压测注意事项            the firewalls on the systems are turned off or correct ports ...

  5. Jmeter分布式压测实战及踩坑处理(含参数化)

    项目中使用Jmeter进行大并发压测时,单机受限内存.CPU.网络IO,会出现服务器压力还没有上 去,但压测服务器由于模拟的压力太大死机的情况.JMeter的集群模式可以让我们将多台机器联合起来 一起 ...

  6. jmeter分布式压测

    stop.sh需要跑Jmeter的服务器上安装Jmeteryum install lrzsz 安装rz.sz命令rz jemter的压缩包 拷贝到/usr/local/tools下面unzip apa ...

  7. jmeter 分布式压测(Linux)

    之前一篇博文写的是如何在Linux上使用jmeter压测,这篇介绍下Linux上jmeter的分布式压测. 和windows上的分布式类似,需要配置agent节点和控制机 一.Agent节点配置 1. ...

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

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

  9. jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)

    解决办法:1.控制机和代理机:修改jmeter.properties中server.rmi.ssl.disable=true 不启动SSL2.控制机和代理机: Slave(从压力机)启动jmeter- ...

随机推荐

  1. 【java】学习路径31-文件IO基本操作(未涉及到流)

    一.初始化: File f1 = new File("//Users//Shared//JavaIOTest//Test01.txt"); File f2 = new File(& ...

  2. KingbaseES如何更改现有表的主键

    更改主键 假设您必须更改现有表的主键.您可以通过执行以下语句来实现此目的: ALTER TABLE tablename DROP CONSTRAINT tablename_pkey , ADD PRI ...

  3. mysql_varchar与中英文关系总结

    mysql 4.0版本以下,varchar(50), 指的是50字节,如果存放utf8汉字时,只能存放16个(每个汉字3字节) mysql 5.0版本以上,varchar(50), 指的是50字符,无 ...

  4. 微信公众号商城、小程序商城、H5商城 实例 前后端源码

    CRMEB客户管理+电商营销系统  https://gitee.com/ZhongBangKeJi/CRMEB 演示站后台: http://demo.crmeb.net/admin 账号:demo 密 ...

  5. Java SE 19 新增特性

    Java SE 19 新增特性 作者:Grey 原文地址: 博客园:Java SE 19 新增特性 CSDN:Java SE 19 新增特性 源码 源仓库: Github:java_new_featu ...

  6. shell下cat EOF中变量$处理

    在使用cat EOF中出现$变量通常会直接被执行,显示执行的结果.若想保持$变量不变需要使用 \ 符进行注释 [root@localhost ~]# cat >> aa.txt <& ...

  7. 使用ConfigMap配置您的应用程序

    转载自:https://kuboard.cn/learning/k8s-intermediate/config/config-map.html ConfigMap 作为 Kubernetes API ...

  8. 智能工厂的ERP和MES之间的区别?

    无论在哪里,ERP(Enterprise Resource Planning,企业资源计划)和MES(Manufacturing Execution System,即制造执行系统)系统都不是同样的东西 ...

  9. 一文读懂Apache Geode缓存中间件

    目录 一.对缓存中间件的诉求 1.1 我们为什么需要缓存中间件 1.2 缓存的分类 1.1.1 弱势缓存 1.1.2 强势缓存 二.什么是Apache Geode 2.1 Apache Geode的架 ...

  10. 从SpringBoot启动,阅读源码设计

    目录 一.背景说明 二.SpringBoot工程 三.应用上下文 四.资源加载 五.应用环境 六.Bean对象 七.Tomcat服务 八.事件模型 九.配置加载 十.数据库集成 十一.参考源码 服务启 ...