问题描述

在实际生产环境下,如果我们遇见Java进程突然消失,该如何去排查问题?

思路

可能有几种原因:

①、Java应用程序的问题:发生OOM导致进程Crash

最常见的是发生堆内存异常“java.lang.OutOfMemoryError: Java heap space”,排查步骤如下:

  • Step1: 查看JVM参数 -XX:+HeapDumpOnOutOfMemoryError 和 -XX:HeapDumpPath=*/java.hprof;
  • Step2: 根据HeapDumpPath指定的路径查看是否产生dump文件;
  • Step3: 若存在dump文件,使用Jhat、VisualVM等工具分析即可;

②、JVM出错:JVM或JDK自身的Bug导致进程Crash

  当JVM发生致命错误导致崩溃时,会生成一个hs_err_pid_xxx.log这样的文件,该文件包含了导致 JVM crash 的重要信息,我们可以通过分析该文件定位到导致 JVM Crash 的原因,从而修复保证系统稳定。
  默认情况下,该文件是生成在工作目录下的,当然也可以通过 JVM 参数指定生成路径:

-XX:ErrorFile=/var/log/hs_err_pid<pid>.log

这个文件的内容他主要有如下内容

  • 日志头文件
  • 导致 crash 的线程信息
  • 所有线程信息
  • 安全点和锁信息
  • 堆信息
  • 本地代码缓存
  • 编译事件
  • gc 相关记录
  • jvm 内存映射
  • jvm 启动参数
  • 服务器信息

拿到这个文件后,不用说了,慢慢啃吧。说到这里,我要摸着良心说。这个文件巨复杂,如果要会读这个文件,请下点功夫。

③被操作系统OOM-Killer

  Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。
  因此,你发现java进程突然没了,首先要怀疑是不是被linux的OOM killer给干掉了!
  你可以去下面这个文件里翻

● 系统报错日志:/var/log/messages

  你执行命令

egrep -i 'killed process' /var/log/messages
# egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式,  -i代表忽略大小写
#或者
grep “Out of memory” /var/log/messages

去日志里进行查询。
  当然,你也可以去内核日志里头查询。有时Linux系统或者系统上运行的java或者其它进程,会发生一些莫名其妙的问题,比如突然挂掉了,比如突然重启等等。在软件上找不到问题所在,此时我们应该怀疑硬件或者内核的问题,此时我们就可以使用 dmesg来查看:

dmesg -T| grep java
#或者
dmesg -T | grep 'Out of memory'
# -T 是显示时间戳

再对比java日志停止时间,看来这里才是问题的根源,所以接下来从优化java内存占用、加内存入手尝试解决问题吧!

备注:

  dmesg命令是用来在Unix-like系统中显示内核的相关信息的。dmesg全称是display message (or display driver),即显示信息。

  实际上,dmesg命令是从内核环形缓冲区中获取数据的。当我们在Linux上排除故障时,dmesg命令会十分方便,它能很好地帮我们鉴别硬件相关的error和warning。除此之外,dmesg命令还能打印出守护进程相关的信息,已帮助我们debug。

本文转自https://www.cnblogs.com/myseries/p/11766804.html,所有权利归原作者所有。

Linux服务器Java进程突然消失排查办法相关推荐

  1. linux服务器time wait,Linux服务器TIME_WAIT进程的解决与原因

    linux服务器上tcp有大量time_wait状态的解决方法和原因解释 毫无疑问,TCP中有关网络编程最不容易理解的是它的TIME_WAIT状态,TIME_WAIT状态存在于主动关闭socket连接 ...

  2. linux java进程消失_Linux服务器Java进程消失问题解决

    Linux服务器Java进程消失问题解决 发布时间:2020-08-20 15:17:37 来源:脚本之家 阅读:65 作者:myseries 这篇文章主要介绍了Linux服务器Java进程消失问题解 ...

  3. linux java进程消失_Linux系统下的Java进程无故消失怎么办?

    Linux系统步骤的一些Java项目总是无故的消失,原来是Java进程被关闭掉了.为什么会出现这种情况呢?有可能是被系统自动清除多余进程,或是其他程序关掉了Java项目,这个时候该怎么办呢? 解决方法 ...

  4. 记一次Java进程突然消失问题

    记一次Java进程突然消失问题 @Date 2017.05.22 现象: 线上同一个应用部署了多台服务器,有的机器运行过程中突然告警,发现服务进程消失. 看程序本身的日志,没有异常输出 查询磁盘空间是 ...

  5. java进程消失_Linux系统下的Java进程无故消失的解决方法

    很多用户表示,Linux系统下的一些Java项目总是会无缘无故的消失,这是为什么呢?小编认为这极有可能是被系统自动清除多余进程,或是其他程序关掉了Java项目.针对此问题,下面,U大侠小编就给大家介绍 ...

  6. Linux下tomcat进程莫名消失

    参考Linux进程被杀掉(OOM killer)查看系统日志   JAVA进程诡异消失oom killer干的 查看/var/log/messages文件可以看到如下信息,发现java进程被操作系统k ...

  7. linux规定ip使用网卡,使用TC 对LINUX服务器网卡进行带宽限制的办法

    对LINUX服务器网卡进行带宽限制的办法: 1.安装iproute yum -y install iproute 2.限制eth0网卡的带宽为500kbit: /sbin/tc qdisc add d ...

  8. linux 服务器进程,如何查看Linux服务器的进程

    Linux服务器正常启动后,提供服务时会调用程序,占用进程.这时候如何查看系统中有哪些进程在被调用呢?我们可以通过以下命令来查看. 1.ps ps命令是最基本同时也是非常强大的进程查看命令.使用该命令 ...

  9. Linux查看java进程

    linux下 1.查看 "java" 相关的进程信息  ps -ef | grep java ps -ef|grep java 2. 停止特定java进程命令:kill -9 ja ...

最新文章

  1. 【CyberSecurityLearning 35】基础环境搭建
  2. fslayui和layui_fsLayui介绍(layui插件)
  3. mysql+io+参数_MySQL IO线程及相关参数调优
  4. word List 13
  5. .net string format
  6. svg与png/jpg快速转换
  7. 带参方法的使用 0908
  8. 多项目晶圆(MPW)服务
  9. 再谈table组件:固定表头和表列
  10. 编译器错误~System.Data.Objects.DataClasses.EntityObject在未被引用的程序集中定义
  11. Linux 环境下安装 GitLab 与配置
  12. 如何测试视频播放器?
  13. 网络编辑员国家职业标准
  14. java ad freeradius_freeradius集合mariadb+深信服的AC做实名认证
  15. word07 去掉标题前的黑点
  16. Java线程池如何优雅地等待所有任务执行完
  17. 安卓开发:怎样实时在百度地图上绘制运动轨迹?
  18. 现场总线过程控制系统实验装置
  19. 辩证法中包括一个关系、两大特征、三大规律、四种方法、五对范畴
  20. 英语日常口语对话(3)

热门文章

  1. 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
  2. mysql常用系统函数归类
  3. IOS APP 国际化(实现不跟随系统语言,不用重启应用,代码切换stroyboard ,xib ,图片,其他资源)...
  4. Java 工厂模式学习
  5. freeredius3.0 mysql_EDIUS非线性编辑系统价格,4k视频编辑系统
  6. android png转灰度,Android提高之使用NDK把彩图转换灰度图的方法
  7. bool c语言_C语言面试54题
  8. 今晚直播丨分布式数据库:从PG-XL到TBASE
  9. MySQL数据库之互联网常用架构方案(全)
  10. SQL优化:你真的知道国家字符集的性能影响吗?