运行好好的系统,突然Prometheus告警,CUP使用率95%告警。赶紧排查一下。
一、先用top -H 命令查看占用CUP高的是哪个进程,看到PID:32518 的进程占用cup过高
二、用top -Hp 32518看看占用资源最多的线程
三、用jstack 32518 > 32518.jstack.log 命令把线程堆栈打印出来
四、使用 printf "%x\n" 32518 把线程pid转换成16进制数 7f06
五、less 32518.jstack.log 搜索 7f06找到代码的位置 。到代码去看,的确是有问题,一个递归函数跳不出来了。
图中的搜索的16进制的数据不是7f60,因为是示例,主要就是讲一个思想。
参考:
【1】https://www.cnblogs.com/myseries/p/12050083.html