连接到 jmeter 从属 docker 容器时连接被拒绝错误
Posted
技术标签:
【中文标题】连接到 jmeter 从属 docker 容器时连接被拒绝错误【英文标题】:Connection refused error while connecting to jmeter slave docker container 【发布时间】:2021-12-31 05:47:34 【问题描述】:我正在尝试使用 Docker 实现 Jmeter 分布式框架。主从运行在 ec2 的不同主机上。端口已打开以允许通信。
Master 卡在下面的消息中
Starting distributed test with remote engines: [slaveIP:1099] @ Sun Nov 21 04:50:29 GMT 2021 (1637470229447)
Remote engines have been started:[slaveIP:1099]
在从属端,它向我抛出连接被拒绝的错误。
java.rmi.ConnectException: Connection refused to host: 172.17.0.2; nested exception is:
从机启动命令:
docker run \
-dit \
-p 6000:6000 \
-p 1099:1099 \
-v "$volume_path":$jmeter_path \
--rm \
jmeter \
-n -s \
-Jclient.rmi.localport=3000 \
-Jserver.rmi.localport=6000 \
-Dserver_port=1099 \
-Djava.rmi.server.hostname=<HostIP> \
-Dserver.rmi.ssl.disable=true \
-j $jmeter_path/server/slave_$timestamp_$IP_ADD.log
启动master的命令
docker run \
-v "$volume_path":$jmeter_path \
-p 3000:3000 \
--rm \
jmeternew \
-n -X \
-t $jmeter_path/$1 \
-Dserver.rmi.ssl.disable=true \
-Dclient.rmi.localport=3000 \
-R slaveIP:1099 \
-l $jmeter_path/client/result_$timestamp.jtl \
-j $jmeter_path/client/jmeter_$timestamp.log
如果我在同一台机器上运行 master 和 slave,相同的命令会起作用。 我尝试更改 java.rmi.server.hostname=0.0.0.0。 它也让我连接被拒绝错误
【问题讨论】:
#1 master docker run的哪个参数中,设置slave ip? #2 Master和client有不同的ips?这些 ip 是公开的还是存在于同一个网络中? 你使用的是什么 jmeter docker 镜像? @JRichardsz -R 参数用于设置从IP。#2。是的,两者都在同一个子网中。我还检查了所有使用端口上主从之间的网络连接 @JRichardsz 我已经关注了 Blazemeter 博客 blazemeter.com/blog/jmeter-distributed-testing-with-docker 来创建图像 【参考方案1】:根据:
https://www.guru99.com/jmeter-distributed-testing.html https://www.baeldung.com/jmeter-distributed-testing JMeter with remote servers https://medium.com/@Muhammad.Ali.Nisar/jmeter-master-slave-configuration-fe38fc890ca https://jmeter.apache.org/usermanual/remote-test.html我们只需要:
配置从机 配置运行机器 使用文件jmeter/bin/jmeter.properties在master上添加slave ip/ips remote_hosts=192.165.0.10,192.165.0.20,192.165.0.30
主端口和从端口是随机分配的,因此您应该分别使用参数:client.rmi.localport 和 server.rmi.localport。
然后启动主jmeter
然后启动slave jmeter,连接就会建立起来。
建议
按照互联网上的几个教程建立与 docker 的连接。这将帮助您检测以下错误:
防火墙权限 主从端口配置 公共/私有网络限制 等如果可行,则使用 docker 将其自动化。
【讨论】:
【参考方案2】:-
您正在使用
172.17.0.2
,这是Class B networks 的一种本地网络地址,因此您的“主机”可能无法相互访问,请尝试改用public IP addresses
您需要在您的操作系统firewall 和EC2 security groups 中打开RMI 端口
我不明白你为什么需要 docker,它不会增加任何价值,只会让事情变得更复杂并消耗资源
我看不到在那里进行分布式测试的原因,一个主和一个从等于一台“负载生成器”机器,这意味着您可以从单个主机run your test in command-line non-GUI mode 并获得相同的结果。
【讨论】:
以上是关于连接到 jmeter 从属 docker 容器时连接被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
android:无法在 targetSdkVersion 更改时连接到相机服务