线上java问题排查
0.jps
这个输出java进程pid
#jps
查看java的线程
#top -Hp 25448
如图25757这个线程比较耗时,看看他在做什么
注意需要折算出线程pid的16进制值,然后jstack。
可以打印更多信息
#jstack pid | grep -A 20 649d
参考:JVM调优之jstack找出最耗cpu的线程并定位代码
top+jstack分析cpu过高原因
1.jstack
#jstack -l pid > jstack.log
使用jstack命令输出这一时刻的线程栈
jstack线程分析
jstack日志深入理解
2.jmap
#jmap -dump:format=b,file=heapDump 6900
#jmap -dump:live,format=b,file=dump.bin 6900
-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=.
live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
Java命令学习系列(3):Jmap
jmap查看堆内存大小
#jmap -heap pid
注意:jmap使用的时候jvm是处在停顿状态的,只能在服务不可用的时候为了解决问题来使用,否则会造成服务中断。
使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象,如下:
# jmap -histo:live pid | more
需要使用MAT工具分析jmap dump的内存
使用jmap和MAT分析JVM堆内存
3.jstat
jstat -gcutil pid
250毫秒一次采样4次
可以看出:
堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)
现在来解释各列含义:
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时
E、hprof(Heap/CPU Profiling Tool)
4.gcore
#gdb -q --pid=1990
(gdb) generate-core-file
(gdb) detach
(gdb) quit
jmap -dump:format=b,file=heap.hprof /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java core.1990
需要具体jdk对应的bin/java
参考:
gcore 获取程序core dump file 但程序不用退出,gdb 分析core
java程序性能分析之thread dump和heap dump
5.堆外内存泄露分析
top出来java占用内存极大而jmap出来的很小,说明有堆外内存泄露。
参考Java堆外内存泄露分析
综合使用参考: JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程
线上java问题排查相关推荐
- 线上Java应用排查和诊断规范
标准做法一:OOM触发HeadpDump 目的: OOM发生时,输出堆栈快照文件,供研发人员分析. 在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OO ...
- Java线上应用故障排查之二:高内存占用
前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...
- Java线上应用故障排查之一:高内存占用
Java线上应用故障排查之一:高内存占用 转载地址:http://www.blogjava.net/hankchen 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMe ...
- 线上应用故障排查之二:高内存占用
为什么80%的码农都做不了架构师?>>> 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGen space 2 ...
- Alibaba Cloud Toolkit 中SLS插件助力线上服务问题排查
简介:Alibaba Cloud Toolkit 是一款非常优秀的插件,新增SLS日志服务的功能,针对软件开发者日常工作中常见的问题排查场景,将日志服务平台的功能集成到ide当中,省去了不同窗口之间来 ...
- 线上基础问题排查常用手册
线上基础问题排查常用手册 问题分类 业务问题 日志排查 代码逻辑排查 配置排查 性能问题 接口问题 JVM问题 Redis问题 MySQL问题 系统问题 实施手段 日志排查 阿里云 参考: https ...
- 线上java JVM问题排查
作者:霞落满天 第一部分 是我以前公司的一则正式案例: 第二部分 是我另一个博客上写的主要是最近发现大家问的比较多就写了此文 第一部分 线上真实故障案例 下面是一个老系统,代码写的有点问题导致出现这 ...
- 线上java程序CPU占用过高问题排查
简要 工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统.最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题. 最后发现是JasperRep ...
- 线上Java 高CPU占用、高内存占用排查思路
一.前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题.当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警.本文主要针对系统 ...
最新文章
- ISA Server 2006 安全保障指南
- 「BZOJ 2342」「SHOI 2011」双倍回文「Manacher」
- Vasya and Robot
- 删除一个程序Linux,一天一个Linux基础命令删除文件或目录命令rm
- LeetCode 837. 新21点(动态规划)
- Android:进度条加载
- .NET中Redis安装部署及使用方法
- XJTUOJ wmq的队伍(树状数组求 K 元逆序对)
- git删除分支_程序员必须要掌握的 Git 使用技巧
- 填坑 ---- arcgis api for javascript 加载天地图
- 关于Egret项目升级引擎出现的问题
- 无线局域服务器架设方法,技巧:如何实现局域网架设BT服务器
- 绚丽彩虹同学录V1.4公测版
- 【Unity】Jay 开发日志(五)——主菜单的创建
- iOS - 下拉上拉菜单,万能菜单,适用于各种场合
- 华为交换机关闭服务端口
- selenium+python 输入含有span标签的标题
- 【猫图识别】【HTML】一张猫图,告诉你猫咪在哪
- 20年java面试_Java 20年
- 美--自行车的视觉瞬间
热门文章
- Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
- pyinstaller 打包tensorflow2.0为单个文件
- 西门子断开延时定时器_在PLC编程中定时器的一些针对现场不同情况的一些妙用...
- 张正友相机标定代码(c++python)
- 傅里叶变换之看不懂就掐死我教程
- 用Unity的视频广告创建2D动作游戏 Create Action 2D Game With Video Ads In Unity
- 递归/归并:count of smaller numbers求逆序数
- ubuntu18.04 Desktop版本部署13.2.6版本ceph
- MQTT 心跳和keepalive配置
- Tensorflow多线程输入数据处理框架(一)——队列与多线程