线上CPU过高可能是因为某些线程陷入死循环导致的,我们可以按照如下步骤排查:
1. top:找到cpu占用率高的java进程id(pid)
2. shift + h:找到进程下所有线程信息(线程id、线程所占用的cpu使用率)
3. printf v"%0x\n" <pid>: 记住线程id并转换为16进制形式
4 jstack <pid> | grep -A 10 <Thread 0x16 id>:利用java的jstack 查看java线程的信息
5 cat -n file:查看找到该线程执行到的源码信息
6. 解决问题
参考
当CPU飙高时,它在做什么?
https://www.jianshu.com/p/90579ec3113f
Linux查看实时网卡流量的几种方式
https://www.jianshu.com/p/b9e942f3682c
如何优雅的实现文件上传或下载?
https://www.jianshu.com/p/fca34c2bf7f1
网友评论