在过去的三个月中,由于各种原因,该公司的单个应用程序服务器(java)莫名其妙地被K,检查起来更加痛苦。是什么导致JAVA进程被终止?如何解决问题?在此处进行总结并与您分享:
是什么导致JAVA进程被终止?
Java应用程序问题:OOM导致进程崩溃
JVM本身故障:JVM或JDK自身的错误导致进程崩溃
OMN-Killer按操作系统
如何解决问题?
1. Java应用程序问题:OOM导致进程崩溃
这种情况主要取决于R&D代码的质量。我遇到过大约2次。在正常情况下,发生OOM异常时,JVM的GC将被回收,它不会直接导致JVM进程退出。如果存在出口,则可能是内存泄漏,结果是内存使用量越来越大。 。 。 。但是,此JVM的OOM引起的异常非常好。故障排除步骤如下:
步骤1:查看JVM参数-XX:+ HeapDumpOnOutOfMemoryError和-XX:HeapDumpPath = * / java.hprof
步骤2:检查转储文件是否根据HeapDumpPath指定的路径生成。
步骤3:如果有转储文件,请使用可视工具(例如VisualVM)进行分析。
2. JVM自身故障:JVM或JDK自身的错误导致进程崩溃
因为JDK本身是由错误引起的,所以会遇到这种情况。当JVM中发生致命错误时,将生成诸如hs_err_pid_xxx.log之类的文件。该文件包含导致jvm崩溃的重要信息。通过分析文件以定位崩溃的根本原因,可以改进它以确保系统稳定性。发生崩溃时,默认情况下该文件将生成到工作目录中。但是,可以通过jvm参数-XX:ErrorFile指定生成的路径,例如:
-XX:ErrorFile = / var / log / hs_err_pid .log
根据错误消息,您可以转到Java BUG数据库库以找到相应的BUG:
Https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8134389
OMN-Killer按操作系统
也曾经遇到过这种情况。 Linux内核具有一种称为OOM杀手(Out-Of-Memory Killer)的机制。此机制监视使用过多内存的进程,尤其是那些瞬间消耗大量内存的进程。为了防止内存耗尽,内核将终止进程。算了吧。您可以转到/ var / log / messages并打开系统错误日志。执行以下命令:
是什么导致JAVA进程被终止?
当然,您也可以转到内核日志进行查询。有时,在Linux系统或系统上运行的Java或其他进程可能会有一些无法解释的问题,例如突然挂断(例如突然重启)。我们在软件上找不到问题。在这一点上,我们应该怀疑硬件或内核问题。此时,我们可以执行dmesg | grep java命令查看:
是什么导致JAVA进程被终止?
完全有可能看到内核对进程做了正确的事情。
总结一下
上述异常的故障排除顺序通常是:Java应用程序问题->-> JVM本身故障操作系统的OSM-Killer。如果有其他疑问可以咨询创新互联客服了解,创新互联专业提供服务器租用,服务器托管,香港主机租用,云服务器租用等服务。