【问题标题】:Apache Ignite node segmentedApache Ignite 节点分段
【发布时间】:2017-09-26 19:09:18
【问题描述】:

有时我会不断地对节点进行分段。它发生在具有约 40 个节点的集群中——一次只发生在一个节点上。有几次它发生在进行一些繁重的 GC 工作时。另一方面,我看到类似的繁重 GC 工作正在进行,并且没有节点被分段。我已将故障检测超时调整为大于我遇到的最大 GC 但这没有帮助 - failureDetection 超时几乎是最大 GC 的 2 倍。我怎样才能确定这是否真的是 GC 或网络问题? 我怀疑它与网络有关,因为其他节点也会失败。当进程重新启动时,它工作正常,所以我会排除网络问题。 我在哪里可以查看生成 EVT_NODE_SEGMENTED 的代码? 我调试了 IgniteConfiguration 对象,发现 segResolvers 为空/空,所以我不知道它发布的事件在哪里。

使用了基于 S3 的发现,这里不确定它是否重要(点燃 1.9)。

我想知道在什么条件下会产生这样的事件?无法连接到大多数其他节点或所有节点?

【问题讨论】:

  • 您是否配置了任何其他超时?我的意思是 networkTimeout、connectTimeout 等。此外,查看所有节点的配置和日志会很有帮助。
  • 我只配置了 failureDetectionTimeout 和 slowClientQueueLimit。我有时会看到与 socketWriteTimeout 相关的警告 - 发生了超时,我可能应该增加它。
  • 所有其他节点日志包含特定节点失败的条目。 [disco-event-worker-#28%null%] WARN o.a.i.i.m.d.GridDiscoveryManager - Node FAILED: TcpDiscoveryNode [id=6d74ee33-0068-4e4f-8e67-b8f2a8bca05b, addrs=[0:0:0:0:0:0:0:1%lo, 10.50.9.176, 127.0.0.1], sockAddrs=[/0:0:0:0:0:0:0:1%lo:47500, /127.0.0.1:47500, ip-10-50-9-176.ec2.internal/10.50.9.176:47500], discPort=47500, order=74, intOrder=57, lastExchangeTime=1506065144854, loc=false, ver=1.9.0#20170302-sha1:a8169d0a, isClient=false]
  • 在死掉的节点上我可以找到[tcp-disco-msg-worker-#2%null%] WARN o.a.i.s.d.tcp.TcpDiscoverySpi - Node is out of topology (probably, due to short-time network problems).

标签: ignite


【解决方案1】:

当节点断开连接无法重新连接时会发生此事件,请参阅ClientImpl.javaServerImpl.java

查看分段节点的日志,一定是Node is out of topology (probably, due to short-time network problems消息之类的,这样你就可以找出确切的问题了。

【讨论】:

  • 谢谢,现在正在查看代码。想想看,如果所有其他节点都认为这个节点“死了”并且 JVM 本身还活着,这意味着 ignite 没有响应一些心跳检查。如果这不是网络问题,则意味着盒子一定很忙,无法处理这些消息。据我了解 failureDetection 超时指的是心跳,在我的情况下它相当大 - 任何想法我还应该检查什么?
  • 会不会是org.apache.ignite.spi.discovery.tcp.ServerImpl.RingMessageWorker.checkHeartbeatsReceiving that produces TcpDiscoveryStatusCheckMessage 导致节点感觉像是被分段了?
猜你喜欢
  • 2017-06-07
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2021-04-10
  • 2017-12-16
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多