我们的java进程死了有一个奇怪的问题。
应用程序没有堆栈跟踪或向日志写入任何内容,该进程随机死亡。这是一个使用频繁的应用程序,但问题只出现在每月一次。
我们目前正在考虑使用Process Monitor,但欢迎任何其他建议。
修改
这是一个分布式Java应用程序,在Weblogic上运行,内置Web框架(是的,这是一个糟糕的想法,但它已经运行了八年),连接到Oracle。
-
内存不足? 根据Brian Agnew的说法,我们的日志会捕获java.lang.OutOfMemoryException。
将崩溃写入日志?我认为Java不会有机会,死亡发生在进程级别,而不是Java退出。
答案 0 :(得分:2)
你可以将它包装在一些捕获日志文件(stdout / stderr)和退出代码的shell脚本中(它应该给出一些关于它如何死亡的指示)吗?在JVM退出时,您还可以使用WMI
捕获计算机级统计信息如果VM本身崩溃,它将留下一个包含堆栈跟踪,机器级调试信息的hs_err_pid ...文件。然后,您可以使用它来诊断VM问题。有关详细信息,请参阅this blog entry。
如果问题与应用程序的行为有关,可能值得查看JConsole,尽管根据您对问题的描述,这听起来更像是一个低级VM问题。
(我假设您使用的是Java版本号的最新VM等。)
答案 1 :(得分:0)
您可以使用Linux NAGIOS服务器来监控Windows计算机和服务的运行状况!请查看:nagios-monitoring-windows。
如果您的Java应用程序出现此类问题!你应该测试并调试它!应用程序不应该没有痕迹!寻找日志文件!应用程序来自哪个供应商?还是自编?尝试强制执行另一个Log4J / Logger / Debug Level。使用仙人掌等监控您的系统,以减少发生此类故障的可能性。与软件供应商联系。
是否可以使用enogh内存?也许该应用程序内存不足?它是一个独立的java进程还是来自tomcat / jboss服务器的java进程?
您是否将崩溃时间记录到日志中?他们出现在不同的时间片?或者看起来他们几乎是时间循环的?
答案 2 :(得分:0)
VisualVM是一种新工具,可以更轻松地监控Java应用程序:
https://visualvm.dev.java.net/description.html
“VisualVM是一个工具,可以在Java应用程序运行时提供有关它们的详细信息。它提供了一个直观的图形用户界面,使您可以轻松查看有关多个Java应用程序的信息。”