【问题标题】:Where to find error logs in detail for Apache Ignite?在哪里可以找到 Apache Ignite 的详细错误日志?
【发布时间】:2016-05-26 11:34:10
【问题描述】:

我正在使用 Apache Ignite 来集群我们的网络会话。偶尔我们的一个缓存崩溃,我在我的 Tomcat 应用程序日志文件中不断收到以下异常消息:

2016-05-23 15:04:02,200 ERROR root/error 495 - Failed to update web session: null
java.lang.IllegalStateException: Cache has been closed or destroyed: session-cache
        at org.apache.ignite.internal.processors.cache.GridCacheGateway.enter(GridCacheGateway.java:160)
        at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.onEnter(IgniteCacheProxy.java:1923)
        at org.apache.ignite.internal.processors.cache.IgniteCacheProxy.get(IgniteCacheProxy.java:855)
        at org.apache.ignite.cache.websession.WebSessionFilter.doFilter0(WebSessionFilter.java:341)
        at org.apache.ignite.cache.websession.WebSessionFilter.doFilter(WebSessionFilter.java:315)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
2016-05-23 15:04:06,497 ERROR root/error 495 - Failed to update web session: null
java.lang.IllegalStateException: Cache has been closed or destroyed: session-cache
...

这让我很担心,因为我找不到任何进一步的错误消息来解释崩溃的原因,甚至在 IGNITE_HOME/work 文件夹中也找不到

(顺便说一下,由于内存不足而发生此崩溃,我通过增加应用程序 JVM 堆大小来修复它。)

我的问题是:

  1. 在哪里可以找到解释崩溃原因的日志?
  2. 如果没有可用的日志,我是否需要注册某些事件以接收崩溃的通知/解释,如何?
  3. 当收到此类缓存崩溃的通知时,有什么方法可以在无需重新启动整个应用程序的情况下恢复缓存?

非常感谢!

更新 (2016-08-04)

正如 Valentin 所指出的,如果节点嵌入到应用程序中,默认情况下,Ignite 会继承应用程序的日志记录设置。事实上,Ignite 将其日志写入同一个应用程序日志文件中。

如果我想将 Ignite 日志输出到单独的日志文件,我可以将配置添加到 log4j.properties,如下所示:

log4j.appender.IGNITE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.IGNITE.File=${IGNITE_HOME}/work/logs/${tomcat.hostname}/ignite.log
log4j.appender.IGNITE.DatePattern='.'yyyy-MM-dd
log4j.appender.IGNITE.Threshold=DEBUG
log4j.appender.IGNITE.layout=org.apache.log4j.PatternLayout
log4j.appender.IGNITE.layout.ConversionPattern=[%d{ABSOLUTE}][%-5p][%t][%c{1}] %m%n

log4j.logger.org.apache.ignite=INFO, IGNITE

但是还有一点我不太明白,前面的配置会将Ignite日志信息输出到上面指定的ignite.log和应用程序的日志文件中。 @Valentin,想知道你是否知道为什么?谢谢。有什么方法可以将 Ignite 日志仅输出到 ignite.log,而不是应用程序的日志文件?

【问题讨论】:

    标签: ignite


    【解决方案1】:

    如果一个节点被嵌入到应用程序中,它将默认继承其日志设置。因此,Ignite 很可能将日志写入应用程序写入日志的同一文件中。

    请注意,如果您使用的是 Log4J,则应在项目中包含 ignite-log4j 依赖项。

    至于恢复数据,如果集群中只有一个节点发生故障并且您至少有一个备份,则不应丢失任何数据。要添加备份,请使用 CacheConfiguration.backups 配置属性。

    【讨论】:

    • 感谢您的回答。我已经相应地更新了我的问题,请参阅问题中的更新(2016-08-04)。想知道您是否可以解决如何将 Ignite 日志仅输出到 ignite.log 而根本不输出到应用程序的日志文件的后续问题。
    • @Yuci 会不会是因为您为 Ignite 类别指定了两个附加程序(log4j.logger.org.apache.ignite=INFO, IGNITE)?在任何情况下,您都应该为此深入研究 log4j 配置。 Ignite 对此没有任何控制权。
    【解决方案2】:

    我不知道这是否能解决您的具体问题,但我在 IGNITE_HOME/work/logs 中找到了日志

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2014-09-13
      • 2021-12-06
      • 2021-03-14
      • 2021-11-04
      • 2023-03-16
      • 2010-10-03
      相关资源
      最近更新 更多