之前总结了 jmeter 分布式测试的过程,在部署过程中提到,要在 system.properties
中配置自己的 IP。

至于为什么要这么做,源于这一次 debug 的过程。

运行环境
技术分享图片

mint, ubuntu 两台主机作为 master 节点,一台 win server 作为 slave 节点,采用分布式的方式,
对 target 进行测试。

问题
问题很奇怪,以 mint 系统作为 master,调度分布式测试没有问题,

$ jmeter -n -t ./test.jmx -R 10.27.2.210 -l test.jtl -e -o report_test
Creating summariser
Created the tree successfully using ./888.jmx
Configuring remote engine: 10.27.2.210
Starting remote engines
Starting the test @ Wed May 16 10:09:24 CST 2018 (1526436564379)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary = 1 in 00:00:00 = 3.5/s Avg: 20 Min: 20 Max: 20 Err: 0 (0.00%)
Tidying up remote @ Wed May 16 10:09:26 CST 2018 (1526436566910)
… end of run
而使用另一台 ubuntu 主机作为 master,调度测试,则卡在 waiting 这一行,

$ jmeter -n -t ./test.jmx -R 10.27.2.210 -l test.jtl -e -o report_test
Creating summariser
Created the tree successfully using ./888.jmx
Configuring remote engine: 10.27.2.210
Starting remote engines
Starting the test @ Wed May 16 10:09:24 CST 2018 (1526436564379)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
尝试1:防火墙干扰
第一种猜测,应该是 ubuntu 系统的防火墙干扰,阻止了 4445 端口的数据。

先关闭防火墙

$ sudo service ufw stop
再次运行测试,依旧卡在 waiting 那一行,看来问题没有那么简单。

尝试2:关闭监听功能
以 Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
信息在网上查找,有人建议修改 jmeter 设置,不监听 shutdown 信息,相应的也就不会开启 4445 端口,
理论上就不会卡在 waiting 那里,而是直接跳过。

在 ubuntu 主机,修改 jmeter.properties 文件,

#jmeterengine.nongui.maxport=4455 修改为
jmeterengine.nongui.maxport=0
但是依旧不能工作。

尝试3:端口没有开启
在 mint 作为 master,成功调度分布式测试的过程中,mint 主机自身打开了 4445 udp 端口,
用 netstat 可以查看的到。

但是,在 ubuntu 调度的时候,用 netstat 也可以查看到 4445 udp 端口已经打开。
而且用 netcat 测试 udp 端口也是可用的。

$ nc -vz -u 10.27.2.13 4445
Connection to 10.27.2.13 4445 port [udp/*] succeeded!
看来也不是端口未开放的问题。

尝试4:信息被阻塞
猜测是不是在哪个环节,shutdown message 被阻拦,导致收不过消息,而一直卡在那里。

于是在 mint 主机运行测试的时候,用 wireshark 监听所有发送与 4445 udp 的信息,然而!什么都没有!

这样看来,之前对问题的判断是不准确的。一直以为和 shutdown message 有关,其实正常运行一次测试,根本不必要有 shutdown message。

尝试5:在日志中寻找
之前一直被表面现象迷惑,认为是 master 的问题,直到进入 slave 节点查看日志 jmeter-server.log。
发现这样的错误输出,

2018-05-14 18:29:56,240 ERROR o.a.j.s.BatchSampleSender: testEnded(host)
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) ~[?:1.8.0_162]
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) ~[?:1.8.0_162]
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) ~[?:1.8.0_162]
at sun.rmi.server.UnicastRef.invoke(Unknown Source) ~[?:1.8.0_162]
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source) ~[?:1.8.0_162]
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source) ~[?:1.8.0_162]
at com.sun.proxy.$Proxy20.testEnded(Unknown Source) ~[?:?]
at org.apache.jmeter.samplers.BatchSampleSender.testEnded(BatchSampleSender.java:127) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.samplers.DataStrippingSampleSender.testEnded(DataStrippingSampleSender.java:86) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.samplers.RemoteListenerWrapper.testEnded(RemoteListenerWrapper.java:90) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:229) [ApacheJMeter_core.jar:4.0 r1823414]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:495) [ApacheJMeter_core.jar:4.0 r1823414]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_162]
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method) ~[?:1.8.0_162]
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[?:1.8.0_162]
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[?:1.8.0_162]
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[?:1.8.0_162]
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_162]
at java.net.PlainSocketImpl.connect(Unknown Source) ~[?:1.8.0_162]
at java.net.SocksSocketImpl.connect(Unknown Source) ~[?:1.8.0_162]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_162]
at java.net.Socket.connect(Unknown Source) ~[?:1.8.0_162]
at java.net.Socket.(Unknown Source) ~[?:1.8.0_162]
at java.net.Socket.(Unknown Source) ~[?:1.8.0_162]
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_162]
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) ~[?:1.8.0_162]
… 13 more
为什么地址是 127.0.1.1 ?为什么要向这个地址通信?

根据对 jmeter master/slave 通信机制的理解,不仅 master 主动向 slave 通信, slave 也向 master 主动通信,自然要知道彼此的地址。

由此联想到,在 slave 节点多网卡的时候,一般都设置 hostname,猜测 master 也需要进行同样的设置,告知 slave 自己的通信地址。

于是在 ubuntu master 主机的 system.properties 最后一行添加,

java.rmi.server.hostname=10.27.2.13
测试终于正常运行了。

写在最后
推而广之,在 jmeter 的所有节点,无论 master/slave,都显示设置自己的 IP 地址。

system.properties 最后一行添加

java.rmi.server.hostname=
为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname

标签:abs change java.net cst sock notify 自己 groov java

原文地址:https://www.cnblogs.com/fousor/p/9780728.html

issue no route to host 为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname--(有效)相关推荐

  1. 为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname

    之前总结了 jmeter 分布式测试的过程,在部署过程中提到,要在 system.properties 中配置自己的 IP. 至于为什么要这么做,源于这一次 debug 的过程. 运行环境 mint, ...

  2. 【软件测试培训】了解jmeter分布式测试

    一提到分布式测试,大家肯定会觉得,哇!好高大上,一定很高深的吧,这里老师推出不做傻白甜系列文章,带同学们一步一步理解jmeter的分布式测试. 首先我们来看下jmeter自动化测试的流程 ,见如下图1 ...

  3. Jmeter --- 分布式测试

    在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分 ...

  4. jmeter分布式测试配置

    jmeter分布式测试 说明:1台8核16G的windows2008的机器,只能器6000个线程,否则效果不是很好:并且负载机器需要做如下设置: 1.打开注册表:regedit 2.HKEY_LOCA ...

  5. Python自动化二--jmeter分布式测试,抓包,python语法基本介绍

    内容: 1.jmeter分布式测试 2.Jmeter在linux上运行 3.抓包 4.python 1.jmemter分布式测试-连接其它负载机 1)其它压力机上启动Jmeter.bat文件 2)在主 ...

  6. Jmeter分布式测试-远程调用

    一.环境准备 1.Jmeter环境:apache-jmeter-3.1 2.JDK环境:JDK1.8 3.连接无线  facebank_test / facebank008(Jmeter远程serve ...

  7. 用Jmeter分布式测试——多台电脑做压力测试

    在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起J ...

  8. Jmeter 分布式测试完整实践过程(部署成功)

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

  9. JMeter压力测试,五年Java开发者小米、阿里面经

    下载地址:jmeter-plugins.org 安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可. 启动je ...

最新文章

  1. python的源代码文件的扩展名是-python源文件后缀是什么?
  2. Confluence 6 手动安装语言包和找到更多语言包
  3. 命令行下升级pip版本
  4. springboot+mybatis整合shiro——登录认证和权限控制
  5. 【大数据教程】HDFS基本架构、基本命令、回收站机制和API操作
  6. 互联网日报 | 苏宁易购拿下英雄联盟职业联赛赞助权;荣耀游戏本年内将推出;英特尔芯片总设计师辞职...
  7. python静态代码检查_想要开发一个供 Python 使用的静态类型检查项目
  8. Vue3动态组件、缓存组件、分发组件
  9. 如何爬取ajax实时加载多个ts文件的视频
  10. 的mvc_浅谈MVC
  11. arm 模式 Linux,ARM Linux:usr模式转为svc模式的实现原理
  12. php手机网站支付宝_PHP实现支付宝手机网站支付功能
  13. crontab播放音乐没声音
  14. 手机录制视频然后一帧一帧分析
  15. 深圳金证股份面试的经历
  16. java 数组形式字符串_java 数组格式字符串转化为字符串
  17. 知乎9.6万赞热帖:“为什么飞机的头等舱一直拉着帘子?”答案细思极恐
  18. 由于微信字体大小的设置导致rem布局的微信公众号页面发生错乱的问题总结
  19. HBaseCon亚洲2018峰会盛大开幕 阿里带你洞悉HBase大数据生态最新发展和行业实践...
  20. [简单逆向]某直播APP 收费直播链接获取-AES解密

热门文章

  1. 携手HMS Core统一扫码服务, 兴业证券优理宝App提升用户扫码体验
  2. 留良乡工薪家庭理财规划
  3. (附源码)计算机毕业设计SSM酒店管理系统
  4. 为什么我会被Kubernetes“洗脑”?
  5. 测试技能整理-python自动化
  6. 【POI】Java+poi生成Excel(.xlsx)折线图
  7. Sepolicy学习(一)
  8. (预测贷款用户是否会逾期)支持向量机和决策树的模型建立
  9. vue iframe高度自适应
  10. 零基础如何开始学习 Python?看完这篇小白变小牛!