JAVA CPU占用过高问题排查(linux)
2018-02-28 11:43
746 查看
原文地址:http://blog.csdn.net/whupanyinghua/article/details/51649819
最近发现有一个服务在服务器上无响应,到服务器上一看,好家伙,java进程CPU一直100%以上
简单记录下我对这个问题的跟踪
首先当然要看下具体是java中哪个线程一直在占用cpu时间哈(说明下,我的java进程号是 26178)1.根据java进程ID进行CPU占用排查 ps -mp 26178 -o THREAD,tid,time | sort -rn | more (sort -rn 以数值的方式进行逆序排列)
2.根据1中查找到的CPU最高的排序中的结果,找出几个占用cpu时间比较高的TID,比如这里的26217 26182 26183将进程ID转换为16进制,printf "%x\n" 26217
3.再使用jstack命名查询是哪个线程TID十进制-》十六进制26217 -》 666926182 -》 664626183 -》 6647拿到线程ID的16进制之后,就可以从jstack中查找具体是对应的线程jstack 26178 |grep 6669 -A 30
可以发现,几个占用大量cpu时间的线程都是GC相关。
4.再次确认gc信息,查看gc time等信息,jstat -gcutil 26178 1000 100
可以看到s0、s1、eden、old、metaspace都已经爆了,并且FGC次数一直在增加,但是却没有回收到任何空间,导致FGC一直在跑,进入循环,应该是程序存在内存泄露咯。(gc有日志,后续有空再出一篇简单分析gc日志的blog)
5.jmap -histo:live 26178 | more 简单查看对象的大小数目
6.dump内存,使用工具分析内存镜像,jmap -dump:live,format=b,file=problem.bin 26178
7.使用MAT(Memory Analyzer tool)进行数据分析,注意,如果步骤6中dump出来文件过大,需要设置MAT配置文件(MemoryAnalyzer.ini)的xmx参数的大小。
最近发现有一个服务在服务器上无响应,到服务器上一看,好家伙,java进程CPU一直100%以上
简单记录下我对这个问题的跟踪
首先当然要看下具体是java中哪个线程一直在占用cpu时间哈(说明下,我的java进程号是 26178)1.根据java进程ID进行CPU占用排查 ps -mp 26178 -o THREAD,tid,time | sort -rn | more (sort -rn 以数值的方式进行逆序排列)
2.根据1中查找到的CPU最高的排序中的结果,找出几个占用cpu时间比较高的TID,比如这里的26217 26182 26183将进程ID转换为16进制,printf "%x\n" 26217
3.再使用jstack命名查询是哪个线程TID十进制-》十六进制26217 -》 666926182 -》 664626183 -》 6647拿到线程ID的16进制之后,就可以从jstack中查找具体是对应的线程jstack 26178 |grep 6669 -A 30
可以发现,几个占用大量cpu时间的线程都是GC相关。
4.再次确认gc信息,查看gc time等信息,jstat -gcutil 26178 1000 100
可以看到s0、s1、eden、old、metaspace都已经爆了,并且FGC次数一直在增加,但是却没有回收到任何空间,导致FGC一直在跑,进入循环,应该是程序存在内存泄露咯。(gc有日志,后续有空再出一篇简单分析gc日志的blog)
5.jmap -histo:live 26178 | more 简单查看对象的大小数目
6.dump内存,使用工具分析内存镜像,jmap -dump:live,format=b,file=problem.bin 26178
7.使用MAT(Memory Analyzer tool)进行数据分析,注意,如果步骤6中dump出来文件过大,需要设置MAT配置文件(MemoryAnalyzer.ini)的xmx参数的大小。
相关文章推荐
- (一)JAVA CPU占用过高问题排查(linux)
- java实战CPU占用过高问题的排查及解决
- 线上java程序CPU占用过高问题排查
- 记一次java程序CPU占用过高问题排查
- java 一次CPU占用过高问题的排查及解决
- linux(unix)下java应用占用cpu过高查找方法
- 分析JAVA应用CPU占用过高的问题
- linux下采用ps、jstack命令排查命中java应用中占用CPU高的代码
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- Linux下Chrome字体设置和启用OpenGL、GPU显卡加速解决Flash CPU占用过高的问题
- JAVA中hashmap.get()导致CPU占用过高问题
- linux下查找 java web 应用 cpu占用过高的方法
- 分析JAVA应用CPU占用过高的问题
- java问题导致linux负载、cpu过高如何定位
- linux下java程序占用CPU和内存过高排错处理方案
- 线上问题排查方法-cpu占用过高
- windows下查找java应用占用CPU过高问题
- Linux主机下 java项目CPU占用过高分析