java服务CPU使用率高排查
第一步 使用top命令进行查看
如果是死锁,cpu使用率不会很高,但不会响应,这时这样排查。
第二步 使用jps查看到进程id,再使用jstack pid查看线程堆栈信息
jstack pid
会出现如图所示的信息,表示发生死锁,然后去排查这块的代码就行了:
第三步 如果使用top -c查看到cpu使用率很高
//根据pid查找到线程的命令,找到使用cpu最高的线程pid
top -H -p 进程pid//将线程pid转成16进制
printf "ox%x\n" 74318
输出:ox1224e
//找到当前进程里面占用cpu较高线程命令
jstack 74232 | grep -A 20 ox1224e
可以找到对应代码哪一行: