关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

服务器应用程序无缘无故被kill掉,咋办?

发布时间:2019-10-29 16:38:11

近3月至今,企业的某些应用服务器(java)无缘无故的出現被kill掉状况,缘故各不相同,排查起來也较为痛楚。那什么缘故会导致JAVA进程被kill呢?该怎样去排查难题呢?这里做个小结,跟大伙儿共享下:

什么缘故可能会致使JAVA进程被kill呢?

Java手机应用程序的难题:产生OOM导致进程Crash

JVM本身常见故障:JVM或JDK本身的Bug导致进程Crash

被电脑操作系统OOM-Killer

服务器应用程序无缘无故被kill掉,咋办?

该怎样去排查难题呢?

1.Java手机应用程序的难题:产生OOM导致进程Crash

这种情况关键在于产品研发编码品质,我碰到过的大约有2次。一般状况下,出現OOM出现异常,JVM的GC会开展收购,是不容易立即导致JVM进程撤出的。假如出現撤出的状况,那便是内存泄漏,因为运行内存占有愈来愈大,結果。。。。但是这类JVM的OOM导致的出现异常,非常好排查。排查流程以下:

Step1: 查询JVM主要参数 -XX:+HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath=*/java.hprof

Step2: 依据HeapDumpPath特定的文件目录查询是不是造成dump文件;

Step3: 若存有dump文件,应用VisualVM这类可视化工具剖析就行等专用工具剖析就能;

2.JVM本身常见故障:JVM或JDK本身的Bug导致进程Crash

这种情况碰到一次,由于JDK本身BUG导致的。当JVM出現错误时,会转化成一个hs_err_pid_xxx.log那样的文件,该文件包括了导致jvm crash的关键信息内容,能够根据剖析该文件精准定位到导致crash的根本原因,进而改进以保证系统平稳。当出現crash时,该文件默认设置会转化成到工作中文件目录下,殊不知能够根据jvm主要参数-XX:ErrorFile特定转化成文件目录,eg:

-XX:ErrorFile=/var/log/hs_err_pid.log

然依据错误,能够进到Java BUG dataBase库中来搜索相匹配的BUG:

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8134389

被电脑操作系统OOM-Killer

这种情况也碰到过一次。Linux 内核有一个体制叫OOM killer(Out-Of-Memory killer),该体制会网络监控这些占有运行内存过大,特别是在是一瞬间迅速耗费很多运行内存的进程,为了避免运行内存耗光而内核会把该进程干掉。能够去/var/log/messages里翻系统软件出错系统日志,实行以下指令:

什么缘故会导致JAVA进程被kill呢

或许,你还可以去内核系统日志里面查寻。有时候Linux系统软件或是系统软件上运作的java或是其他进程,会产生一些无缘无故的难题,例如忽然挂了了,例如忽然重新启动这些。在手机软件上找不着存在的问题,这时人们应当猜疑硬件设备或是内核的难题,这时人们就能够实行 dmesg | grep java 指令来查询:

服务器应用程序无缘无故被kill掉,咋办?

彻底是可以看内核对进程做对实际操作。

小结

对左右出现异常出現排查的排查次序一般是:Java手机应用程序的难题 -> JVM本身常见故障 -> 被电脑操作系统OOM-Killer。



/../template/Home/Databay/PC/Static