`
IXHONG
  • 浏览: 437580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM宕机分析

    博客分类:
  • Java
jvm 
阅读更多

 

 一、能够引起JVM崩溃的常见原因有:

线程阻塞

CPU 使用率过高

JVM Crash

堆内存不足

类装载

Java虚拟机自身的Bug

JDK与服务器(CPU、内存、操作系统)的兼容性

内存溢出

二、日志文件

hs_err_pid.log,致命错误出现的时候,JVM生成了hs_err_pid.log这样的文件,其中包含了虚拟机崩溃原因的重要信息:

触发致命错误的操作异常或者信号;

版本和配置信息;

触发致命异常的线程详细信息和线程栈;

当前运行的线程列表和它们的状态;

堆的总括信息;

加载的本地库;

命令行参数;

环境变量;

操作系统CPU的详细信息。

JavaCore及HeapDump文件,Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。有时致命问题发生后,Jvm不会死掉,还能继续运行,但致命问题发生,Jvm进程会死掉,为了能够保留Java应用发生致命错误前的运行状态,JVM在宕掉前产生两个文件,分别为JavaCore及HeapDump文件。

JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以stack trace的显示。通过对JavaCore文件的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,例如数据库查询,长期得不到响应,最终导致系统崩溃等情况。

HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析。这类文件最重要的作用就是分析系统中是否存在内存溢出的情况。

三、宕机分析

宕机的时候必定会产JavaCore及HeapDump文件,如果未宕机时,想查看Jvm中线程与内存情况,那么在linux下可通过kill -3 进程号来手工产生这两个文件来进行分析。

MAT

Eclipse Memory Analyzer是一个非常好用的分析工具,我们可以利用它的Eclipse 插件轻松实现查看对象树、对象大小、生成报告,甚至自动化分析可能出现泄露的对象, 和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安装 Eclipse IDE 环境,MAT 作为一个独立的 Eclipse RCP 应用运行;另一种是”集成版“的,也就是说 MAT 也可以作为 Eclipse IDE 的一部分,和现有的开发平台集成。

JavaCore文件的头部有一个“Current Thread Details”标记,它记录了JavaCore产生时系统运行的线程id,使用线程id在文件中查找线程的详细信息,该信息中记载了线程运行哪个类的时候造成的JavaCore。

HeapDump文件是指定时刻的Java堆栈的快照,是一种镜像文件。MAT工具通过分析HeapDump文件,哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。

示例:

javacore文件分析:

由上图可见,引起javacore的原因是因为内存溢出,但其进程中的线程并未出现明细的异常,见

下图的线程状态分析。

引起javacore的线程如下所示:

该线程异常如下:

由此可见,因为内存不足导致了内存溢出,程序不存在异常,那么接下来通过分析dump来查看内存情况,见下图:

通过上述的dump文件的分析,我们得到内存的可能泄露点有两个,都是占用了比较大的内存,通过分析内存泄露点来找到解决办法。

<!--EndFragment-->
0
0
分享到:
评论

相关推荐

    weblogic宕机处理文档

    处理weblogic宕机,消除内存溢出或者栈溢出问题

    WebLogic宕机大全总结

    本文主要是本人在实际的生产环境中遇到WebLogic宕机问题,经过自己的经验整理而总结的文档,对从事中间件的人将会是很好的参考。

    jacob.jar JVM访问COM对象

    JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。JACOB目前已经成为sourceforge(ht

    JVM内存分析

    主要是针对JVM内存溢出,服务器宕机,内存优化,溢出类型进行介绍

    weblogic定期故障分析

    在重新调整JVM为1G的情况下,分析了内存再次溢出的DUMP文件,从下图看出有存内存泄漏问题,而且情况较为严重,一个class共消耗内存670M,这个泄漏对象当前正在进行JDBC数据访问操作。 在JVM为1G的条件下,根据分析...

    Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤

    最近公司需要在Linux下监控tomcat的服务,一旦tomcat服务存在异常或者宕机,重启tomcat保证服务的正常运行,由于Linux下有Shell脚本可以实现此效果,下面是Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤。...

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    java应用运行过程中难免会出现问题,特别是在生产环境,发生异常或宕机情况,需要诊断与分析,定位原因,进行优化,避免下次再次出现问题。 虽然现在有很多可视化工具,使用起来比命令行更方便,但我们仍需要对基本...

    weblogic优化

    weblogic企业级性能优化 JVM虚拟机调优 Web应用调优 JDBC数据库连接池性能调优 操作系统调优 WebLogic宕机支持模式 WebLogic挂起支持模式

    面试题问题合集.docx

    redis集群如果一个宕机怎么办?秒杀的具体实现和怎么应对缓存雪崩?redis集群创建有没有用到池,能不能用池创建? 31.redis是如何存储数据的? 32.redis怎么批量删除里面的内容,项目中哪些地方用到多大,redis...

    万得信息技术Java开发面经.pdf

    场景题:集群服务器宕机解决⽅案 8.MongoDB和redis区别,分别何时使⽤,MongoDB讲⼀下 9.完全平衡⼆叉树简述,红⿊树简述 10.mysql引擎底层 11.索引优化(什么时候⽤索引,什么时候不能⽤) 12.索引⼯作流程 13....

    Eclipse开发分布式商城系统+完整视频代码及文档

    │ 04-主从出现宕机怎么办?.avi │ 05-哨兵.avi │ 06-搭建Redis的集群环境.avi │ 08-插槽的分配和key的关系.avi │ 09-新增节点.avi │ 10-移除集群中的节点.avi │ 11-集群的故障转移.avi │ 12-MySQL的查询优化...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【Dubbo】dubbo运行时,突然所有的zookeeper全部宕机,dubbo是否还会继续提供服务. 169 【Dubbo】dubbo服务是阻塞的吗? 170 【Dubbo】dubbo 默认协议 170 【Dubbo】dubbo注册中心zookeeper支持的功能 171 【Dubbo】...

    HBase最佳实践-读性能优化策略

    总结起来,大家遇到的主要问题无非是FullGC异常导致宕机问题、RIT问题、写吞吐量太低以及读延迟较大。FullGC问题之前在一些文章里面已经讲过它的来龙去脉,主要的解决方案目前主要有两方面需要注意,一方面需要查看...

    Dubbo服务框架-其他

    服务提供者,服务消费者三者之间均为长连接,监控中心除外注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,...

    redisStudy.zip

    rdb是定时的持久机制,宕机有可能会丢失最后一次持久化之后存在数据丢失。aof是基于操作日志追加的持久机制。(基本回答) 加分项: 1.rdb持久化原理 原理是redis会单独创建(fork)一个与当前进程一模一样的子进程...

    Java常见面试题208道.docx

    162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗? 163.说一下 zookeeper 的通知机制? 十七、MySql 164.数据库的三范式是什么? 165.一张自增表里面总共有 7 条数据,删除了最后 2 条...

Global site tag (gtag.js) - Google Analytics