ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Java--进程突然消失--原因/排查方案

2021-11-02 20:33:50  阅读:155  来源: 互联网

标签:文件 Java -- 排查 OOM JVM 进程


原文网址:Java--进程突然消失--原因/排查方案_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍Java进程突然不见了的原因及排查步骤。

        有时候Java进程突然消失,一般是前端接口返回404最终排查到Java进程消失的。

Java进程消失原因

  1. Java应用程序的问题:发生OOM导致进程Crash
  2. 被操作系统OOM-Killer
  3. JVM出错:JVM或JDK自身的Bug导致进程Crash

原因及排查方案

应用程序OOM

简介

最常见的是发生堆内存异常“java.lang.OutOfMemoryError: Java heap space”

排查方案

查看堆内存异常时生成的dump文件。

dump文件

  1. 默认路径:当前路径下,文件名为java_pid[pid].hprof。
  2. 自定义的路径其可以使用-XX:HeapDumpPath选项来指定路径

然后使用MAT/jprofiler/VisualVM/jhat等工具进行分析即可。

被操作系统OOM-Killer

简介

        Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会在如下情况下杀掉进程:

  1. 占内存过大,尤其是很快消耗大量内存的进程
  2. 内存不够用

排查方案

方案1:查看日志文件:/var/log/message

直接:grep "Out of memory" /var/log/messages

结果示例:(如果出现下边这样,有“Out of memory: xxx”,说明发生了OOM-Killer)

方案2:使用dmesg命令

dmesg -T | grep "Out of memory"      # -T 是显示时间戳

结果示例:(如果出现下边这样,有“Out of memory: xxx”,说明发生了OOM-Killer)

JVM出错

简介

        当JVM发生致命错误导致崩溃时,会生成一个hs_err_pid_xxx.log这样的文件,该文件包含了导致 JVM crash 的重要信息,我们可以通过分析该文件定位到导致 JVM Crash 的原因,从而修复保证系统稳定。

排查方案

默认情况下,该文件是生成在工作目录下的,当然也可以通过 JVM 参数指定生成路径: 

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

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

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

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

其他网址

Linux服务器Java进程突然消失排查办法 - myseries - 博客园
记一次Java程序莫名其妙消失不见的排查_神在异乡-CSDN博客

标签:文件,Java,--,排查,OOM,JVM,进程
来源: https://blog.csdn.net/feiying0canglang/article/details/121044929

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有