1

我们的 java 进程死亡有一个奇怪的问题。

应用程序不会堆栈跟踪,也不会向日志写入任何内容,进程只是随机死亡。这是一个使用频率很高的应用程序,但这个问题大约每月才会出现一次。

我们目前正在研究使用Process Monitor,但欢迎提出任何其他建议。

编辑:

它是一个分布式 Java 应用程序,运行在带有内部 Web 框架的 Weblogic 上(是的,这是一个糟糕的想法,但它已经运行了八年),连接到 Oracle。

-

记不清? 根据 Brian Agnew 的说法,我们的日志会捕获 java.lang.OutOfMemoryException。

将崩溃写入日志?我认为 Java 永远没有机会,死亡发生在进程级别,而不是 Java 退出。

4

3 回答 3

2

你能把它包装在一些捕获日志文件(stdout/stderr)和退出代码(应该给出一些关于它是如何死亡的指示)的shell脚本中吗?在 JVM 退出时,您还可以使用WMI捕获机器级别的统计信息

如果 VM 本身崩溃,它将留下一个 hs_err_pid... 文件,其中包含堆栈跟踪、机器级调试信息。然后,您可以使用它来诊断 VM 问题。有关详细信息,请参阅此博客条目

如果问题与应用程序的行为有关,则可能值得查看JConsole,尽管从您对问题的描述来看,这听起来更像是低级别的 VM 问题。

(我假设您使用的是 Java 版本号等的最新 VM。)

于 2009-03-27T10:44:20.170 回答
0

VisualVM is a new tool which makes monitoring Java applications easier:

https://visualvm.dev.java.net/description.html

"VisualVM is a tool that provides detailed information about Java applications while they are running. It provides an intuitive graphical user interface that allows you to easily see information about multiple Java applications."

于 2009-04-01T16:09:34.980 回答
0

您可以使用 Linux NAGIOS 服务器来监控您的 Windows 机器和服务的运行状况!看看:nagios-monitoring-windows

如果您的 java 应用程序有此类问题!您应该对其进行测试和调试!应用程序不应该消失得无影无踪!寻找日志文件!该应用程序来自哪个供应商?还是自己写的?尝试强制执行另一个 Log4J/Logger/Debug 级别。使用仙人掌等监控您的系统,以减少发生此类崩溃的可能性。与软件供应商交谈。

是否有足够的内存可用?也许应用程序内存不足?它是独立的 java 进程还是来自 tomcat/jboss 服务器的 java 进程?

您是否已将崩溃时间记录到日志中?它们出现在不同的时间片中?或者看起来它们几乎是时间循环的?

于 2009-03-27T10:30:44.617 回答