Java-JVM调优jstack找出最耗cpu的线程&定位问题代码

Java-JVM调优jstack找出最耗cpu的线程&定位问题代码 https://blog.csdn.net/shasiqq/article/details/109801683

 


 

 

JVM调优jstack找出最耗cpu的线程&定位问题代码
一、服务器环境
二、用到的命令
三、排查过程


一、服务器环境
jdk1.8 有多个tomcat容器运行java程序

 

二、用到的命令
top、printf、jstack、grep

 

三、排查过程
1.用top查出哪个java进程最消耗cpu命令:top 如下图

这三个指标可以看出进程PID为87010的进程很消耗资源

 

2.根据进程87010查出哪个线程最消耗cpu命令:top -Hp 87010 如下图通过上图三个指标可以看出线程90255比较消耗资源,TIME列就是各个Java线程耗费的CPU时间。

 

 

 

3.printf “%x\n” 90255 得到一个16进制的数值 1608f

 

4.jstack 87010|grep 1608f,它用来输出进程90255的堆栈信息,然后根据线程ID的十六进制值grep,如下:

 

 

可以看出是线程池ThreadPoolExecutor的问题,ok问题定位到了。

posted @ 2022-10-24 14:03  WhoKnows1  阅读(179)  评论(0编辑  收藏  举报