Apache JMeter 5.4.1服务器启动失败:java.rmi.server.ExportException: 端口4000监听失败问题求助
解决JMeter分布式启动时的java.rmi.server.ExportException问题
Hey,我一眼就发现你这里踩了个很常见的RMI配置坑!你在从节点启动jmeter-server时,把-Djava.rmi.server.hostname指定成了主节点的IP(10.54.225.190),但这个参数的作用是告诉JMeter从节点要绑定自己的IP地址,所以应该填从节点自身的IP(也就是10.54.225.200)。这就是为什么明明端口没被占用,却还是报监听失败的错——RMI服务在尝试绑定一个不属于当前机器的IP,肯定启动不了呀!
接下来给你一套完整的修复步骤,保证能搞定这个问题:
1. 立刻修正从节点的启动命令
登录到从节点(10.54.225.200),切换到JMeter的bin目录,执行正确的启动命令:
cd apache-jmeter-5.4.1/bin ./jmeter-server -Djava.rmi.server.hostname=10.54.225.200
2. 统一主从节点的RMI端口配置(推荐操作)
为了避免RMI随机端口带来的防火墙困扰,建议在主节点和从节点的jmeter.properties文件中都添加/确认以下配置:
# 你主节点已经配置了,从节点也必须加上这个 server.rmi.localport=4000 # 指定JMeter服务的默认端口(默认是1099,也可以自定义) server_port=1099 # 如果暂时不需要SSL加密,直接关闭它简化配置(后续需要再开启) server.rmi.ssl.disable=true
3. 验证网络和端口的连通性
别忽略这一步,很多分布式问题都是网络不通导致的:
- 在主节点上ping从节点IP(
ping 10.54.225.200),确保两台机器网络可达 - 用
telnet 10.54.225.200 4000和telnet 10.54.225.200 1099测试端口是否开放,如果连接失败,检查CentOS的防火墙规则(比如用firewall-cmd --add-port=4000/tcp --permanent放行端口)或者云服务器的安全组配置
4. 确保keystore配置一致(如果启用SSL的话)
你已经把主节点的rmi_keystore.jks复制到从节点bin目录了,如果后续要开启SSL加密,记得主从节点的jmeter.properties里关于SSL的配置要完全一致;如果暂时不需要,直接用上面的server.rmi.ssl.disable=true就能跳过这部分的复杂配置,先让分布式环境跑起来。
5. 主节点启动客户端的正确姿势
主节点启动JMeter客户端时,最好也指定自身的IP,避免机器多网卡导致的IP识别错误:
cd apache-jmeter-5.4.1/bin ./jmeter -Djava.rmi.server.hostname=10.54.225.190
按照上面的步骤操作完,应该就能顺利启动从节点的JMeter服务,正常跑分布式压测了!
内容的提问来源于stack exchange,提问作者Sameera De Silva
相关产品推荐
相关产品推荐

