【问题标题】:Java Process getting killed without loggingJava进程在没有记录的情况下被杀死
【发布时间】:2019-07-11 11:53:01
【问题描述】:

我在 CentOs 机器上运行了一个长时间运行的 Java 进程。我有信息和 错误日志设置正确。该过程运行了更长的时间(18 小时以上)并消失了 突然间。没有错误/异常的痕迹(OutOfMemoryError/ OutOfDiskSpace 错误)。如何弄清楚到底发生了什么,比如进程为什么以及如何被杀死?

These are the OS details.
CentOS release 5.11 (Final)
Kernel \r on an \m

是否有任何标准的系统日志或命令需要弄清楚?该作业在 Tomcat 的 servlet 中运行。 Tomcat 也神秘地倒下了。

【问题讨论】:

  • 你可能想解决这个问题:stackoverflow.com/questions/37497680/…
  • 嗯,我认为没有帮助:您需要从系统中收集更多信息。让进程多说一点,这样你就可以看到它什么时候停止,监控它......(顺便说一句,你怎么知道它被杀死了?)

标签: java linux tomcat centos5


【解决方案1】:

您的进程很可能因为系统内存不足而被终止。当它发生时,它首先尝试杀死短期运行的进程而不是长时间运行的进程。 OOM Killer 不太可能记录在您的应用程序日志中。

检查dmesg并尝试在那里找到有关杀死<java_pid>的信息。

这是在 Linux https://www.kernel.org/doc/gorman/html/understand/understand016.html#toc21 中确定要杀死的任务的“坏”程度:

badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
sqrt(sqrt(cpu_time_in_minutes)))

内核逐步执行所有正在运行的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多