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

防止Ignite客户端在连接失败时日志异常和线程转储

商泽宇
2023-03-14
    IgniteConfiguration cfg = new IgniteConfiguration();
    cfg.setClientMode(true);
    cfg.setIgniteInstanceName(getInstanceName());
    cfg.setPeerClassLoadingEnabled(true);

    TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
    ipFinder.setAddresses(getIpFinderAddresses());
    cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder));

    return Ignition.start(cfg);
2021-10-05 10:34:50.781 ERROR 5548 --- [alance-service%] o.apache.ignite.internal.util.typedef.G  : Blocked system-critical thread has been detected. This can lead to cluster-wide undefined behaviour [workerName=tcp-client-disco-msg-worker, threadName=tcp-client-disco-msg-worker-#4%my-service%-#54%my-service%, blockedFor=14s]
2021-10-05 10:34:50.791  WARN 5548 --- [alance-service%]                                          : Possible failure suppressed accordingly to a configured handler [hnd=NoOpFailureHandler [super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker [name=tcp-client-disco-msg-worker, igniteInstanceName=my-service, finished=false, heartbeatTs=1633422875964]]]
org.apache.ignite.IgniteException: GridWorker [name=tcp-client-disco-msg-worker, igniteInstanceName=my-service, finished=false, heartbeatTs=1633422875964]
  at java.base@11.0.11/java.net.PlainSocketImpl.waitForConnect(Native Method) ~[na:na]
  at java.base@11.0.11/java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107) ~[na:na]
  ...
2021-10-05 10:34:50.792  WARN 5548 --- [alance-service%] o.a.i.i.p.failure.FailureProcessor       : No deadlocked threads detected.
2021-10-05 10:34:50.868  WARN 5548 --- [alance-service%] o.a.i.i.p.failure.FailureProcessor       : Thread dump at 2021/10/05 10:34:50 CEST
  ...
  ... hundreds of lines with thread dump (why one would want to see them if - as stated above - there were no deadlocks?) ...
  ...
2021-10-05 10:34:57.436  WARN 5548 --- [alance-service%] o.a.i.spi.discovery.tcp.TcpDiscoverySpi  : Failed to connect to any address from IP finder (will retry to join topology every 2000 ms; change 'reconnectDelay' to configure the frequency of retries): [/127.0.0.1:47500, /127.0.0.1:47501, /127.0.0.1:47502, /127.0.0.1:47503, /127.0.0.1:47504, /127.0.0.1:47505, /127.0.0.1:47506, /127.0.0.1:47507, /127.0.0.1:47508, /127.0.0.1:47509]

共有1个答案

吴举
2023-03-14

我相信在您的例子中,最冗长的消息来自failureprocessor。当检测到故障时,它会打印一个完整的线程转储。有两个系统属性控制此行为。

  1. ignite_dump_threads_on_failure-完全禁用线程转储,最好将其保留为true,因为在其他失败类型的情况下它会非常有用。
  2. ignite_dump_threads_on_failure_throttling_timeout-它设置两条消息之间的最小间隔(以毫升为单位)。

下面是Javadocs:IGNITE_DUMP_THREADS_ON_FAILURE和ignite_dump_threads_on_failure_throttling_timeout。

 类似资料:
  • 我使用Apache Ignite 2.7.5作为.NET核心中服务器和瘦客户机。当我做与缓存相关的操作时,put、get和load等.net核心应用程序会自动崩溃。 因此,我想处理for循环内部的异常,例如、、等,然后从catch块抛出for循环,否则如果只有异常块,则继续循环迭代。

  • 我们正在运行“helloworld”示例https://grpc.io/docs/quickstart/cpp.html#update-a-grpc-service,我们收到以下错误: 14:连接失败 迎宾员收到:RPC失败。 服务器和客户端正在监听:。服务器正在运行。首先,我们在服务器上只收到一个数据包,客户端崩溃,我用tcpdump检查了它。我们在不同的主机和同一台主机上进行了检查,但这两种情

  • 我正在使用Netty 4.0构建一个客户端/服务器。服务器正在正确监听localhost:8083并且我可以远程登录它,它会正确触发服务器断点。但是当我尝试使用这段代码连接时: 它在sync()处抛出异常:java.nio.channels.ClosedChannelException。如前所述,当我telnet 127.0.0.1 8083(或用Socket连接代码)时,它确实有效。知道吗?非常

  • 连接失败客户端一般会有两种报错,connection refuse 和 connection timeout connection refuse(连接拒绝) 一般是以下原因: 1、客户端连接的端口错了 2、客户端连接的域名或者ip错了 3、如果客户端使用了域名连接,域名可能指向了错误的服务器ip 4、服务端没有启动或者端口没有被监听 5、使用了网络代理软件 6、服务端监听ip与访问地址不在一个地址

  • 例外情况: 原因:java.net.connectException:拒绝连接:在org.springframework.web.client.resttemplate.doexecute连接(resttemplate.java:359)