Jmeter端口通过Java的RMI大家都知道默认端口是1099,用于技术实现。RMI即调用远程方法(Remote Method Invocation)支持存储在不同地址空间的程序级对象之间的通信,实现远程对象之间的无缝远程调用)。Java RMI 用于不同虚拟机之间的通信,可以在不同的主机或相同的主机上使用;一个虚拟机中的对象调用另一个虚拟机中的对象,但允许远程调用的对象通过一些标志进行标识。
RMI的交互图:
RMI第一部分由三部分组成rmiregistry(JDK在bin),第二个是server端程序提供远程对象,第三个是client端程序,想调用远程对象的方法。首先,先开始rmiregistry服务,启动时可指定服务监控端口,也可使用默认端口(1099,默认端口不配置)。其次,server在本地,先实例化提供服务的实现类,然后通过RMI提供的Naming/Context/Registry(以下实例使用Registry)等类的bind或rebind该方法将才实例化的实现类注册到rmiregistry一个名字暴露在外面。最后,client端通过本地界面和已知名称(即rmiregistry再次使用暴露的名称)RMI提供的Naming/Context/Registry等类的lookup方法从RMIService然后得到实现类。这样,虽然本地没有这类实现类,但所有方法都在接口中,可以实现远程调用对象的方法。
(相关资料图)
方法从客户对象中调用(stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下传递给主机,然后通过传输层再次向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。
说完这些,我们再来看看。Jmeter,其实Jmeter我们需要注意的端口有三个,一个是server_port(默认1099和server.rmi.port是用来覆盖server_port),这是每个压测节点(压测服务)都必须使用的端口,另一个是节点(Slave/Server)的server.rmi.localport(默认情况下没有设置,很多人也设置为1099),主节点(Master/Client)的client.rmi.localport(默认为随机,设置为0或不设置为随机),因为后两个端口是随机的,我们一般不注意,但如果是在防火墙下,或者是Docker在环境中,我们不允许随机端口,因此必须设置固定端口:
我们需要每个节点 或者 服务器打开两个端口(数据从主节点发送到节点,有时可以同时设置为1099)。Server_port=1099server.rmi.localport=50000
文件可在节点配置jmeter.properties中设置,启动节点时也可设置:
$JMETER_HOME/bin/jmeter-server \\ -Dserver.rmi.localport=50000 \\ -Dserver_port=1099
在客户端计算机上打开端口,从属服务器将结果发送给主服务器。client.rmi.localport=60000
可在主服务中配置文件jmeter.properties也可以在压测命令中设置(如果在配置文件中也设置了端口,以配置文件为准):
jmeter -n -t sample-test/sample-test.jmx -Dclient.rmi.localport=60000 -R172.17.0.5,172.17.0.6,172.17.0.7
从上述关系调用的角度来看,我们也可以了解端口的设置关系,但如果我们严格按照上述方式配置,并且相应的端口也放在防火墙下,是否没有问题,不一定,我们也应该结合日志分析一些异常。
情况一:RMI打开附加端口,导致防火墙下主节点传输端口仍堵塞
我们在master设置了主控端client.rmi.localport=60000端口,但事实上,当我们按下测试时,过程将打开另外两个端口(60001和60002)。
为保证压测顺利,这两个端口也应放在防火墙下,否则压测时可能会卡住,如下日志:
SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in[jar:file:/root/.jmeter/apache-jmeter-5.1.1/lib/log4j-slf4j-impl-2.11.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in[jar:file:/root/.jmeter/apache-jmeter-5.1.1/lib/ext/jmeter-plugins-dubbo-2.7.3-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type[org.apache.logging.slf4j.Log4jLoggerFactory]Creating summariser
一般一直卡在里面Waiting中,这意味着端口不开放,或者端口不完全开放(本例属于此情况,只开放6万,没有额外的端口),或者java.rmi.server.hostname没有设置(多网卡没有设置)hostname也可能导致RMI我们可以看到连通信息被堵塞)jmeter.log发现日志无异常,slave发动机正常启动:
2021-03-25 08:52:40,543 INFO o.a.j.r.RmiUtils: Disabling SSL for RMI as server.rmi.ssl.disable is set to "true"2021-03-25 08:52:40,543 INFO o.a.j.s.BatchSampleSender: Using batching (client settings) for this run. Thresholds: num=100, time=600002021-03-25 08:52:40,543 INFO o.a.j.s.DataStrippingSampleSender: Using DataStrippingSampleSender for this run2021-03-25 08:56:55,186 INFO o.a.j.e.ClientJMeterEngine: sent test to 192.168.0.154 basedir="."2021-03-25 08:56:55,187 INFO o.a.j.e.ClientJMeterEngine: Sending properties{}2021-03-25 08:56:55,193 INFO o.a.j.e.ClientJMeterEngine: sent run command to 192.168.0.1542021-03-25 08:56:55,193 INFO o.a.j.e.DistributedRunner: Remote engines have been started
我们再到slave端看jmeter-server.log主节点拒绝连接日志:
2021-03-25 08:56:55,179 INFO o.a.j.e.RemoteJMeterEngineImpl: Creating JMeter engine on host 192.168.0.154 base "."2021-03-25 08:56:55,179 INFO o.a.j.e.RemoteJMeterEngineImpl: Remote client host: 192.168.0.1822021-03-25 08:56:55,180 INFO o.a.j.e.StandardJMeterEngine: StandardJMeterEngine Start ... 192.168.0.1542021-03-25 08:56:55,182 INFO o.a.j.s.FileServer: Default base="/opt/apache-jmeter-5.1.1/bin"2021-03-25 08:56:55,185 INFO o.a.j.s.FileServer: Set new base="."2021-03-25 08:56:55,189 INFO o.a.j.e.StandardJMeterEngine: Applying properties{}2021-03-25 08:56:55,190 INFO o.a.j.e.RemoteJMeterEngineImpl: Running test2021-03-25 08:56:55,193 INFO o.a.j.e.StandardJMeterEngine: Running the test!2021-03-25 08:56:55,193 INFO o.a.j.s.SampleEvent: List of sample_variables:[]2021-03-25 08:56:55,197 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: ".functions."2021-03-25 08:56:55,197 INFO o.a.j.e.u.CompoundVariable: Note: Function class names
-
天天通讯!支付宝上线生僻字键盘,姓名生僻字人群线上办事更容易鞭牛士报道生僻字被认为是另一种形式的“数字鸿沟”,全国有...
-
世界简讯:李国庆喊话汪小菲有我难吗:我的家和企业都没了,一人顶你们母子李国庆在社交平台称自己给张兰发消息,张兰回了;给汪小菲发...
-
百事通!腾讯网域公司增资至240亿,不久前入股三星财险天眼查App显示,近日,深圳市腾讯网域计算机网络有限公司发生...
-
今日看点:传奇影业与索尼达成合作,《沙丘》《哥斯拉》系列仍由华纳发行据Variety报道,11月28日,传奇影业宣布终止与华纳兄弟的合作...
-
iPhone 15将全系支持灵动岛,机身将舍弃扁平设计国外科技媒体91Mobile近日对iPhone15系列信息进行了汇总,称i...
-
【全球独家】上海迪士尼乐园今日起暂时关闭2022年11月29日,据上海迪士尼度假区发布公众号消息,根据疫...
-
世界播报:微信内测更多打开方式功能:快捷调用小程序打开图片、视频、文件据IT之家消息,微信似乎要在“操作系统化”的道路上一去不复...
-
iPhone14Pro系列产量将减少600万台,工厂需要至少10万名员工才能回到正轨据IT之家消息,受富士康工厂供应中断等因素影响,可能会导致2...
-
迪士尼CEO称公司将维持冻结招聘的措施迪士尼首席执行官BobIger在回归公司后的首次公众会议上向员工...
-
世界百事通!仓储公司申请冻结苏宁两公司千万存款天眼查App显示,近日,丰树金达仓储(上海)有限公司与上海苏...
- 智联世界,元生无界!快手虚拟人IP亮相2022人工智能大会
2022-09-07 10:47:54
- 机器人界“奥林匹克”!2022世界机器人大会8月18日举行
2022-08-10 09:58:58
- 2025年全球人口将达到90亿!机器人将在农业领域大显身手
2022-07-14 09:41:10
- 中科院院士蒋华良:AI+分子模拟与药物研发将大有可为
2022-07-14 09:37:00
- “千垛之城荷你有约” 2022兴化市荷文化旅游节正式开幕
2022-07-07 09:28:34