You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2实例上JMeter分布式测试遇NoRouteToHostException的排查与解决

JMeter分布式测试NoRouteToHostException问题排查与修复

问题场景

我使用3台不同地域的EC2实例搭建JMeter分布式测试环境,1台作为主节点,2台作为从节点。已在所有实例的jmeter.properties文件中配置以下参数:

Remote_Hosts=ip_address1, ip_address
client.rmi.localport=50000 
server.rmi.localport=4000
server.rmi.ssl.disable=true 
server-port=8099  
server.rmi.port=8099

运行测试脚本时抛出异常:

nested exception is: java.net.NoRouteToHostException: No route to host

问题根源

这个异常本质是网络连通性故障,结合EC2跨地域场景,核心原因包括:

  • EC2安全组未开放JMeter通信所需端口:主节点与从节点之间的双向端口访问未被允许
  • 跨地域VPC未打通:不同地域的EC2实例默认处于隔离VPC中,无对等连接或中转网关时无法通信
  • 实例本地防火墙拦截了端口流量:比如iptables、firewalld等阻断了JMeter相关端口的数据包
  • Remote_Hosts配置错误:使用了跨地域无法访问的私有IP,或IP地址填写不全/有误

修复步骤

  1. 更新EC2安全组规则

    • 主节点安全组:允许从节点IP访问50000端口(TCP);允许出站访问从节点的8099、4000端口(TCP)
    • 从节点安全组:允许主节点IP访问8099、4000端口(TCP);允许出站访问主节点的50000端口(TCP)
    • 注意:跨地域场景必须使用实例的公网IP/EIP,安全组规则要指定对应实例的公网IP或IP段
  2. 打通跨地域VPC网络(可选,更安全)
    若不想暴露公网IP,可配置VPC对等连接(支持跨区域的AWS区域)或中转网关,实现跨地域VPC私有网络互联,让实例通过私有IP通信

  3. 处理实例本地防火墙
    登录实例后,关闭防火墙服务或添加端口放行规则:

    # 临时关闭firewalld
    systemctl stop firewalld
    # iptables放行JMeter端口
    iptables -A INPUT -p tcp --dport 8099 -j ACCEPT
    iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
    iptables -A INPUT -p tcp --dport 50000 -j ACCEPT
    
  4. 验证网络连通性
    在主节点测试从节点端口:

    telnet <从节点公网IP> 8099
    nc -zv <从节点公网IP> 4000
    

    在从节点测试主节点端口:

    nc -zv <主节点公网IP> 50000
    

    连通失败则重点排查安全组或VPC配置

配置项检查

当前配置覆盖了核心项,但需确认两个细节:

  • Remote_Hosts:补全第二个从节点的完整公网IP/EIP,避免使用跨地域无法访问的私有IP
  • 从节点启动方式:确保从节点是通过jmeter-server脚本启动,而非普通JMeter客户端

内容的提问来源于stack exchange,提问作者Neha Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:52:25