在bash中是一个有用的命令trap
。它拦截各种信号,如SIGKILL
,SIGHUP
等来处理。
所以...我们遇到一个问题, Tomcat 有时会在没有任何明显原因的情况下死亡。并且 - 日志文件中没有任何有用的信息。
我的想法是在其trap
,以便在 JVM 之前收集jstack
Tomcat 将会死亡。
如何在 Java 中执行此操作?请注意 - 我不是Java程序员。
感谢您的任何提示。
答案 0 :(得分:1)
JVM(至少Oracle)已经安装了信号处理程序,并将信号转换为异常和其他有用的东西。请参阅http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/signals.html。
通常当Tomcat在没有日志的情况下死亡时,它会出现堆栈或堆空间不足的症状(Tomcat在与Web应用程序相同的JVM中运行,并且一个行为不端的应用程序可能会在刷新日志之前使服务器崩溃)。
您使用的是哪种版本的Tomcat?如果您使用的是Tomcat 6+,则可以完全禁用日志缓冲,以便在写入时刷新最终消息。见http://tomcat.apache.org/tomcat-6.0-doc/logging.html。
对于JULI,负的bufferSize将在每次写入后强制刷新。