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问题定位到了。