java进程宕机生产core_Java应用/JVM宕机排查步骤操作
相信大家都遇到过,自己的Java应用运行一段时间就宕机了或者响应请求特别慢。这时候就需要我们了来找出问题所在了。绝大部分都是代码问题导致的。
一、服务宕机
如果是服务宕机,发生致命问题导致进程已经死掉了,那么已经访问不了了,通常都是CPU问题引起的,程序一般会自己生成javacore文件,一般生成位置在/root目录或jar包同目录下。JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。
找到这个文件,执行命令
gdb java
bt
如果文件没有损坏的话可以看到完整的栈调用信息。就可以定位到问题代码所在。
我曾经就因为底层调用的一个geo库出问题,导致程序直接挂掉,分析core文件可以清晰的看到native方法的调用。
二、服务响应请求慢
出现这个问题一般都是内存溢出,GC线程一直在重复GC,没有线程来处理用户请求,或者问题代码导致CPU占用过高。
程序崩溃前会生成HeapDump文件,也可以手动生成,HeapDump是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况。
在JVM启动参数要配置好HeapDump的生成位置和配置打印gc日志。这样才能排查问题。
先分析GC日志
把gc文件上传就好了,就可以看到分析结果。重点关注什么区域的GC占用最多时间。
离线分析工具:GCViewer 是一款开源的GC日志分析工具。
如果程序内存溢出,通过分析gc文件可以发现程序内存占用机会100%而且一直重复GC。
分析HeapDump文件
1、先找到Java应用的pid
ps -ef | grep java 或者 jps -l 查看
2、查看堆内存使用量
jmap -heap
3、查看Java进程中的每一个线程的情况(linux),可以清晰的看到每一个线程的cpu及内存使用情况
top -Hp
window下可以借助工具 Process Explorer,
4、打印线程快照信息,保存到文件xxx.txt中方便查看
jstack > xxx.txt
5、通过top -Hp 看到的线程id是10进制的,我们输出到xxx.txt中的是16进制,所以需要转一下,找一个异常线程tid
printf "%x" 假如输出为 1111
6、在xxx.txt文件中查找tid为1111的栈信息,可以看到这个线程在干什么,定位到问题代码。
7、程序宕机会自动产生dump文件,若没有宕机就手动导出dump文件
jmap -dump:format=b,file=文件名
桌面分析工具:Eclipse Memory Analyzer,它有windows版的和Linux版的
windows下:把HeapDump文件放进去就可以了,分析完后,很直观的看到当前内存占用量最高的是某个类的某个参数。持有了多少个对象,这些对象占用了多少内存,从而定位到问题代码。
Linux下:先把Eclipse Memory Analyzer版上传到服务器,解压,假如/home/mat为解压后路径,执行命令
/home/mat/ParseHeapDump.sh org.eclipse.mat.api:suspects prg.eclipse.mat.api:overview
org.eclipse.mat.api:top_components
分析完之后会在当前文件生成结果文件。下载到本地查看即可。
以上这篇Java应用/JVM宕机排查步骤操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
java进程宕机生产core_Java应用/JVM宕机排查步骤操作相关推荐
- java 宕机_Java应用/JVM宕机排查步骤操作
相信大家都遇到过,自己的Java应用运行一段时间就宕机了或者响应请求特别慢.这时候就需要我们了来找出问题所在了.绝大部分都是代码问题导致的. 一.服务宕机 如果是服务宕机,发生致命问题导致进程已经死掉 ...
- Linux生产环境CPU占用过高排查步骤
先用top命令找出CPU占比最高的 top CPU占用最高的是java进程,它的 进程ID:3362 ps -ef 或者 jps 进一步定位,得知是怎样的程序 [root@192 ~] ps -ef ...
- 如何优雅地停止Java进程
目录 理解停止Java进程的本质 应该如何正确地停止Java进程 如何注册关闭钩子 使用关闭钩子的注意事项 信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境 ...
- vmx进程已提前退出_如何优雅地停止Java进程
目录 理解停止Java进程的本质 应该如何正确地停止Java进程如何注册关闭钩子使用关闭钩子的注意事项信号量机制 总结 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境,即: ...
- java 结束程序_如何优雅地停止Java进程
目录 理解停止Java进程的本质 我们知道,Java程序的运行需要一个运行时环境,即:JVM,启动Java进程即启动了一个JVM. 因此,所谓停止Java进程,本质上就是关闭JVM. 那么,哪些情况会 ...
- 玻璃瓶盖买家怎样区分玻璃瓶盖是手工机工艺还是行列机生产
玻璃瓶盖生产工艺,有手工机和行列机两种工艺,生产出的玻璃瓶盖有一定的区别,辨别时可参考以下几点: 1.口模线和玻璃瓶盖身模具线行列机工艺是一致的,也就是在一条直线上,而手工机则不一定在一条直线上. 的 ...
- linux线程引起jvm崩溃,JVM宕机分析
1.可以引发JVM崩溃的常见缘由有:linux 线程阻塞数据库 CPU 使用率太高服务器 JVM Crash工具 堆内存不足google 类装载spa Java虚拟机自身的Bug操作系统 JDK与服务 ...
- jvm 宕机 打印jvm_通过入侵JVM打印阵列
jvm 宕机 打印jvm 总览 Java中最常见的陷阱之一就是知道如何打印数组. 如果有关如何打印阵列的答案获得了超过1000票赞成票,那么您必须怀疑是否有更简单的方法. 几乎所有其他流行语言都具有这 ...
- 生产环境下JAVA进程高CPU占用故障排查
感谢原作者 http://blog.chinaunix.net/uid-10449864-id-3463151.html 问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常 ...
- java进程老挂掉_Java进程突然挂掉排查分析手记(jvm bug)
故障:11.56 Zabbix收到告警,系统业务一个java进程挂了,今日正好值班遇到,做个分析手记,可以供大家参考. 排查1:查看系统资源情况 主要发现此刻CPU均突然增长,swap内存也有所增长但 ...
最新文章
- crytojs加密 java解密,使用CryptoJS在Javascript中加密并在Java中解密
- 使用pip安装python库的几种方式,解决pip安装python库慢的问题
- python刷阅读_用Python汇集并生成每日教育动态
- python语言是由谁设计并领导开发的_python语言概述 - osc_lt3ocv4d的个人空间 - OSCHINA - 中文开源技术交流社区...
- JUnit 4测试驱动开发结构图
- CountDownLatch使用解说
- 文本文件的输入输出流(这里的重点在于字符集问题)
- 用CMake编译lua
- 关于胶质母细胞瘤的影像组学和影像基因组学
- 焊缝标注vlx实用程序_【CAD自动标注插件下载】CAD自动标注插件yjbz.VLX v1.0 最新版-开心电玩...
- 汽车故障诊断方法及注意事项
- fastai 2019 lesson9 notes 笔记
- MIS迭代一:增删改查功能测试
- Centos7超详细服务器上安装配置教程
- Maven笔记 - 第三章
- 【翻译】NIST IR 8151: 显著减少软件漏洞——致美国白宫科技政策办公室
- 其实我不怕过光棍节,我只是怕你不过光棍节~
- 计算机9针485接口,RS485是九针的插口,而实际上里面只能两根线是有用的,其它的七根线则无作用,那为什么弄九针呢?-工业支持中心-西门子中国...
- Attention Mask
- jsp分页技术的实现
热门文章
- 【滤波器】基于matlab平方根升余弦滤波器【含Matlab源码 994期】
- 【数据分析】基于matlab伊藤微分方程布朗运动分析【含Matlab源码 261期】
- 人工智能火灾报警器_使用AI进行准确的火灾预测
- appium python框架结构_Appium 自动化测试之框架
- pg数据库生成随机时间_postgreSQL自动生成随机数值的实例
- Python基本数据类型(数字、字符串、列表、元组、集合、字典)
- 【C++】常用算数生成算法
- java 类修饰符 作用域_java的4种内部类,你真的了解了吗?
- 电脑蓝牙在哪里打开_华为手机与华为Matebook笔记本如何通过蓝牙传输文件
- 南京晓庄学院c语言试卷,南京晓庄学院—C语言期末考试复习提纲.doc