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

Kubernetes环境下JMeter分布式测试无法启动问题求助

问题排查:Kubernetes环境下RMI主从节点任务下发失败

环境架构

  • Kubernetes命名空间部署在代理、防火墙及交换机之后
  • Master节点向Slave节点下发任务,脚本执行完成后关闭主从节点
  • 已配置并启用Network Policy、Ingress和Egress,开放端口范围:60000-60002、1099-1101;防火墙额外开放8000-8002

问题现象

  • 测试启动后,Master日志出现7-10分钟停顿
  • 后续无测试执行,抛出java.rmi.ConnectException连接超时错误
  • Master日志显示sun.rmi.transport.tcp.TCPConnection关闭

排查方向及验证方法

1. RMI动态端口未正确固定/放行

RMI默认会随机分配数据传输端口,仅开放注册端口和指定范围不足以确保连通:

  • 检查Master/Slave的JVM启动参数,确认是否强制指定RMI数据端口范围:
    -Djava.rmi.server.hostname=<集群内部可访问的IP/Service域名>
    -Drmiregistry.port=1099
    -Djava.rmi.server.port=60000-60002
    
  • 验证Network Policy是否允许主从节点之间的双向流量,Slave需要主动回连Master的数据端口,需确保该方向未被拦截

2. 防火墙/代理会话超时触发连接中断

7-10分钟的停顿时间与常见防火墙会话超时阈值(5-10分钟)高度吻合:

  • 检查代理、防火墙的TCP会话超时配置,确认是否低于任务初始化所需时间,导致空闲连接被提前关闭
  • 确认防火墙是否发送TCP RST包终止超时会话,这种强制切断会直接导致RMI连接异常中断

3. Network Policy规则匹配异常

  • 核对Network Policy的podSelector标签,确保精准匹配Master和Slave Pod,避免标签不匹配导致流量被默认策略拦截
  • 用kubectl describe networkpolicy <policy-name>查看规则详情,确认Egress/Ingress规则同时覆盖RMI注册端口、数据端口及防火墙开放的8000-8002范围
  • 检查是否存在deny-all的全局Network Policy,优先于你的允许规则生效

4. RMI主机名解析失败

  • 确认java.rmi.server.hostname参数设置的是Kubernetes集群内部可访问的地址(如Pod IP、Service域名),而非外部公网地址
  • 在Master/Slave Pod内执行nslookup <对方Service名称>,验证DNS解析是否正常,解析失败会导致RMI连接超时

5. Pod资源不足导致进程停顿

  • 检查Master/Slave Pod的CPU、内存资源限制,是否因资源不足引发JVM长时间GC或进程阻塞
  • 执行kubectl describe pod <pod-name>查看Pod事件,确认是否存在OOMKilled或资源不足警告
  • 导出JVM GC日志,分析是否存在Full GC停顿导致的无响应

6. 节点关闭逻辑过早触发

  • 检查任务脚本逻辑,确认是否在Master下发任务后,未等待Slave确认接收就触发了节点关闭操作
  • 验证脚本是否在任务执行完成后才关闭节点,而非在初始化阶段提前终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:25:52