Linux服务器Java进程消失问题解决-创新互联

这篇文章主要介绍了Linux服务器Java进程消失问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

成都创新互联公司是一家集网站建设,南岗企业网站建设,南岗品牌网站建设,网站定制,南岗网站建设报价,网络营销,网络优化,南岗网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

问题描述

在实际生产环境下,如果我们遇见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.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

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:Linux服务器Java进程消失问题解决-创新互联
本文来源:http://pwwzsj.com/article/dcpche.html