jemter + ant 远程启动salve机器

1|0一. 背景


主机:windows 7  8G + 500SSD + 500HDD

助攻机:虚拟机 Windows Server 2008 R2 2G + 80G

主机和助攻机做分布式,需要结合jenkins + ant做持续集成,但发现如果jmeter脚本要在助攻机上运行,如果每次在主机jmeter GUI界面上手动远程启动助攻机,不太方便,因此想通过配置ant的方法来解决这个问题

2|0二. 通过配置build.xml的办法


这个方法在github ant-jmeter文档中有提及:有个参数是runremote,它如果设置为"true",就会运行jmeter.properties中指定的助攻机,因此我们得出结论,需要配置两个参数jmeterproperties 和 runremote

 配置方法也比较简单

3|0三. 坑一:Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445


一直卡在这里,最后不得不终止

后来参考《Jmeter远程执行,slave机器显示调用成功,但是master机器没有返回测试结果解决》这篇文档,关了Vmware network Adapter vmnet1和Vmware network Adapter vmnet8

 

 

后来发现禁用了xshell就连不上了,于是又启用了

参考另一篇文章《为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname》里面罗列了4445端口问题的几个原因:

1. 防火墙干扰   这个我已经关了的

2. 关闭监听功能  暂未尝试

3. 端口没有开启

4. 信息被阻塞

5. 在日志中寻找

 

这里按照方法5做了排查,打开助攻机的jmeter-server.log,发现果然有一行错误

java.rmi.ConnectException: Connection refused to host: 192.168.56.1; nested exception is: java.net.ConnectException: Connection refused: connect

 192.168.56.1,这是什么鬼?不是我主机ip,那篇文章里说道

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

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

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

java.rmi.server.hostname=10.27.2.13

然后在主机的system.properties中配置主机ip即可

4|0四. 坑二:error 100%


jenkins上显示

 

 测试报告中显示,这不是我们期望的

 

 其中接口的响应结果是

Non HTTP response code: org.apache.http.conn.HttpHostConnectException - Non HTTP response message: Connect to 192.168.20.129:8080 [/192.168.20.129] failed: Connection timed out: connect

后来试了多次,换了个脚本,发现在同样的环境下,助攻机得到了正确的执行,这个是启用了10个线程顺序去执行,没有并发,因此说明环境应该是对的,可能出错在被测系统,这个有待排查

5|0五. 总结


对linux的网络很不熟,因此在这一块绕了很多弯,后面需要加强

 


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/11743098.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(740)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-10-26 解决:Android 8.0检测不到当前的activity
点击右上角即可分享
微信分享提示