Tomcat没有任何日志或任何堆栈就停止了

Rem*_*emi 17 java crash tomcat virtual-machine

我们使用Tomcat 5.5,晚上停在我们的生产服务器(Linux的CentOS的4.8)的麻烦,我们不知道为什么它停止......有没有Tomcat的日志中catalina.out的或任何应用程序的日志.

我们尝试了不同的东西来找到服务器停止的原因:

  • 配置Tomcat以生成核心转储
  • System.exit()用javassist 检测方法是否被调用
  • 添加一个关闭钩子到JVM(带Runtime.getRuntime().addShutdownHook())

它们都没有工作,我们没有核心转储,没有调用Exit方法和关闭钩子.我的结论是:

  • VM未正确终止,但在没有任何日志的情况下崩溃.

任何想法或日志阅读找到Tomcat停止的原因?

MK.*_*MK. 23

1)确保您知道stderr的重定向位置,并检查是否有任何打印在那里.

2)检查Tomcat的内存限制以及系统有多少可用内存.查看/ var/log下的Linux系统日志,查看在此期间是否发生了任何可疑事件.例如,如果系统内存不足,内核可以随机杀死进程(几乎)而无需跟踪.

我们已经在生产中运行了5.5年,并且从未有任何无法解释的停机,FWIW.

  • 答对了./ var/log/message有"Out of memory:Kill process 31201(java)得分783或牺牲孩子". (15认同)
  • 如果您无权访问`/ var/log/messages`,请使用`dmesg`命令 (6认同)
  • +1。如KOF所建议:`/ var / log / messages`表明Java进程被杀死。 (2认同)

Eug*_*sky 0

很可能存在堆栈溢出异常。这是 Tomcat 发生时的典型行为。例如,您尝试序列化为具有循环依赖项的 JSON 或 XML bean(但不处理循环)。

每次我遇到这个问题(好几次),总是这个问题。所有其他停止通常都会正确记录(例如 OutOfMemory 等)。

这种类型的停留不会在任何地方留下任何痕迹。