在Windows机箱上监视(java)进程死亡的最佳方法是什么?
我们有一个奇怪的问题,java进程正在消亡 应用程序不会对日志进行堆栈跟踪或写入任何内容,进程只是随机终止。这是一个使用率很高的应用程序,但这个问题大约每月只出现一次 我们目前正在考虑使用,但欢迎任何其他建议 编辑: 它是一个分布式Java应用程序,运行在Weblogic上,带有内部web框架(是的,这是一个糟糕的想法,但已经运行了八年),连接到Oracle - 内存不足? 根据Brian Agnew的说法,我们的日志将捕获java.lang.OutOfMemoryException在Windows机箱上监视(java)进程死亡的最佳方法是什么?,java,windows,process,trace,Java,Windows,Process,Trace,我们有一个奇怪的问题,java进程正在消亡 应用程序不会对日志进行堆栈跟踪或写入任何内容,进程只是随机终止。这是一个使用率很高的应用程序,但这个问题大约每月只出现一次 我们目前正在考虑使用,但欢迎任何其他建议 编辑: 它是一个分布式Java应用程序,运行在Weblogic上,带有内部web框架(是的,这是一个糟糕的想法,但已经运行了八年),连接到Oracle - 内存不足? 根据Brian Agnew的说法,我们的日志将捕获java.lang.OutOfMemoryException 将崩溃写入
将崩溃写入日志?我认为Java永远不会有机会,死亡发生在进程级别,而不是Java退出。您可以使用Linux NAGIOS服务器监控Windows机器和服务的运行状况!看看: 如果您的java应用程序存在此类问题!你应该测试和调试它!应用程序不应该死得无影无踪!查找日志文件!该应用程序来自哪个供应商?还是自己写的?尝试强制另一个Log4J/Logger/Debug级别。用仙人掌等监控系统,以减少此类崩溃的可能性。与软件供应商交谈 是否有足够的内存可用?也许应用程序内存不足?它是独立的java进程还是来自tomcat/jboss服务器的java进程
你把撞车时间写在日志上了吗?它们出现在不同的时间段?或者看起来它们几乎是时间循环的?您能否将其包装在一些shell脚本中,以捕获日志文件(stdout/stderr)和退出代码(应该给出一些关于它如何死亡的指示)?在JVM退出时,您还可以使用 如果虚拟机本身崩溃,它将留下一个hs\u err\u pid。。。包含堆栈跟踪、机器级调试信息的文件。然后,您可以使用它来诊断VM问题。有关更多信息,请参阅 如果问题与应用程序的行为有关,可能值得一看,尽管从您对问题的描述来看,这听起来更像是一个低级VM问题
(我假设您使用的是Java版本号等的最新VM。)VisualVM是一种新工具,它使监视Java应用程序变得更容易:
“VisualVM是一种在Java应用程序运行时提供详细信息的工具。它提供了直观的图形用户界面,允许您轻松查看有关多个Java应用程序的信息。”如果内存不足,虚拟机不会崩溃。它将无法从操作系统中分配更多,并抛出java.lang.OutOfMemoryExceptions,但VM将保持运行—我已扫描了整个驱动器,并且没有文件名中包含“hs_err”。我想这意味着虚拟机没有崩溃。我将研究WMI和JConsole,谢谢。不依赖OutOfMemoryException将出现在任何日志中。甚至可能没有足够的可用内存来抛出OOME,java进程将“无声地”消亡。