Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows机箱上监视(java)进程死亡的最佳方法是什么?_Java_Windows_Process_Trace - Fatal编程技术网

在Windows机箱上监视(java)进程死亡的最佳方法是什么?

在Windows机箱上监视(java)进程死亡的最佳方法是什么?,java,windows,process,trace,Java,Windows,Process,Trace,我们有一个奇怪的问题,java进程正在消亡 应用程序不会对日志进行堆栈跟踪或写入任何内容,进程只是随机终止。这是一个使用率很高的应用程序,但这个问题大约每月只出现一次 我们目前正在考虑使用,但欢迎任何其他建议 编辑: 它是一个分布式Java应用程序,运行在Weblogic上,带有内部web框架(是的,这是一个糟糕的想法,但已经运行了八年),连接到Oracle - 内存不足? 根据Brian Agnew的说法,我们的日志将捕获java.lang.OutOfMemoryException 将崩溃写入

我们有一个奇怪的问题,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进程将“无声地”消亡。