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

Ignite启动时出现挂起(等待)问题技术问询

Ignite启动挂起问题分析

Ignite启动时出现持续等待的挂起现象,对应的线程栈信息如下:

"fm.ignite.monitor-69-1" #285 优先级=5 系统优先级=0 CPU耗时=35865.92ms 运行时长=83153.67s 线程ID=0x000055a415a850e0 本地线程ID=0x17f1c 处于Object.wait()状态 [0x00007f3cc5fd3000]
   java.lang.Thread.State: 定时等待(在对象监视器上)
    at java.lang.Object.wait(本地方法)
    at org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:1186)
    - 已锁定 <0x00000006f3b3f140> (一个java.lang.Object对象)
    at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:472)
    at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:2210)
    at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:278)
    at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:1089)
    at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1766)
    at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1147)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1799)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1721)
    - 已锁定 <0x00000006924b2580> (一个org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance对象)
    at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1160)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:656)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:578)
    at org.apache.ignite.Ignition.start(Ignition.java:328)
    at com.huawei.cloudsop.ignite.IgniteManager.start(IgniteManager.java:56)
    at com.huawei.iemp.fmdataservice.monitor.ignite.AlarmIgnite.getOrCreateCache(AlarmIgnite.java:115)
    at com.huawei.iemp.fmdataservice.monitor.ignite.dao.CurrentAlarmDaoImpl.startIgnite(CurrentAlarmDaoImpl.java:130)
    at com.huawei.iemp.fmdataservice.monitor.ignite.dao.IgniteMonitorTask.reStartIgnite(IgniteMonitorTask.java:75)
    at com.huawei.iemp.fmdataservice.monitor.ignite.dao.IgniteMonitorTask.run(IgniteMonitorTask.java:60)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:750)

问题根源

从线程栈可以明确看出,Ignite节点卡在了TCP发现SPI的ServerImpl.joinTopology方法的等待逻辑中,本质是节点无法成功加入集群拓扑。

常见原因及解决建议

  • 网络连通性问题:节点间TCP发现端口(默认47500-47509)未开放,导致无法与集群其他节点通信。
    • 解决:用telnet或nc命令测试节点间端口连通性,确保端口能正常访问。
  • 发现配置错误:TcpDiscoverySpi的IP finder配置有误,比如种子节点地址错误、不可达。
    • 解决:检查TcpDiscoveryVmIpFinder等IP finder的种子节点配置,确认地址正确且节点处于运行状态。
  • 防火墙/安全组限制:节点间通信被防火墙、安全组拦截。
    • 解决:调整防火墙或安全组规则,开放Ignite发现端口及通信端口。
  • 集群节点异常:现有集群节点状态异常,无法响应新节点的加入请求。
    • 解决:查看集群其他节点的日志,排查是否有拓扑故障、节点宕机等问题。
  • 超时时间不足:节点加入拓扑的超时时间设置过短。
    • 解决:通过TcpDiscoverySpi.setJoinTimeout()方法增加超时时间,给节点足够时间完成拓扑加入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 03:10:03