当前位置: 首页 > 知识库问答 >
问题:

Apache Ignite:分区交换机中的“已检测到阻塞的系统关键线程”异常

贡英华
2023-03-14

我有一个由6个节点组成的Apache Ignite集群。偶尔,在运行几个小时后,日志中会记录一些如下所示的异常,节点会停止。我不在受影响的服务中使用事件处理程序或pub/sub处理程序。什么会导致这些例外?在这些错误消息中总是提到“分区-交换器”线程,这意味着什么吗?

 Jul 01, 2019 5:23:10 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Blocked system-critical thread has been detected. This can lead to cluster-wide undefined behaviour [threadName=partition-exchanger, blockedFor=61s]
Jul 01, 2019 5:23:10 PM java.util.logging.LogManager$RootLogger log
SEVERE: Critical system error detected. Will be handled accordingly to configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED]]], failureCtx=FailureContext [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker [name=partition-exchanger, igniteInstanceName=null, finished=false, heartbeatTs=1562001729657]]]
class org.apache.ignite.IgniteException: GridWorker [name=partition-exchanger, igniteInstanceName=null, finished=false, heartbeatTs=1562001729657]
        at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1831)
        at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1826)
        at org.apache.ignite.internal.worker.WorkersRegistry.onIdle(WorkersRegistry.java:233)
        at org.apache.ignite.internal.util.worker.GridWorker.onIdle(GridWorker.java:297)
        at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.lambda$new$0(ServerImpl.java:2663)
        at org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorker.body(ServerImpl.java:7181)
        at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2700)
        at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
        at org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerThread.body(ServerImpl.java:7119)
        at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

我在Kubernetes管理的Linux容器上使用Apache Ignite for.NET V2.7。谢谢!

共有1个答案

甄正信
2023-03-14

建议升级到2.7.5,因为它显示的虚假错误较少。

否则,文档部分将描述如何对其进行优化:https://apacheignite.readme.io/docs/critic-failures-handling

 类似资料:
  • 在服务器端,内存消耗正常,线程量约为250个,看起来一切正常。我没有看到任何问题,所以我决定解决服务器端标记为严重的所有问题。 我遇到的第一个是: 检测到阻塞的系统关键线程。这可能导致群集范围内的未定义行为[threadname=tcp-comm-worker,blockedfor=13s] https://yadi.sk/d/mme0xrgi3k6lka 补充:这个问题似乎不是无关紧要的,这个消

  • 检测到[严重][tcp-disco-msg-worker-#2][G]阻塞的系统关键线程。这可能导致群集范围内未定义的行为[threadname=partition-exchanger,blockedfor=10s][12:32:21,772][严重][tcp-disco-msg-worker-#2][]检测到严重系统错误。将相应地处理配置的处理程序[hnd=stopnodeorhaltfailu

  • 在Java中,线程可以有不同的状态: 新建、可运行、阻止、等待、定时等待、终止 但是,当线程被IO阻塞时,其状态为“RUNNABLE”。我如何判断它是否被IO阻止?

  • 从进程调度谈起 现代操作系统(如 Windows、Linux 等)都是分时系统。分时系统允许同时允许多个任务,但实际上,由于一台计算机通常只有一个 CPU,所以不可能真正地同时运行多个任务。这些进程实际上是轮番运行,每个进程运行一个时间片。由于时间片通常很短,用户不会感觉到,所以这些进程看起来就像是同时运行。 每个进程的时间片由操作系统完成初始化,所有进程轮番地执行相应的时间。具体下一个时间片轮到

  • 我不明白以下几点: 用户级线程需要非阻塞系统调用,即多线程内核。否则,整个进程将在内核中阻塞,即使进程中还有可运行的线程。 内核线程如何处理阻塞系统调用?在用户级线程中,当一个线程进行阻塞系统调用(例如读取)时,为什么其他线程不能继续工作?

  • 本文向大家介绍操作系统中分页和交换之间的区别,包括了操作系统中分页和交换之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解操作系统中的分页和交换之间的区别- 交换 它是将整个过程复制到另一个位置的过程。 当整个过程都已转移到磁盘上时,将发生此过程。 在此,数据从主存储器临时交换到辅助存储器。 无需使用任何内存管理方法即可完成此操作。 也可以通过不活动的进程来完成。 它有助于给