1.查找占用率高的进程
top -d 1
2.查看进程中线程使用cpu情况
通过ps -mp pid -o THREAD,tid,time命令查看该进程的线程情况
3.将线程ID转换16进制
printf "%x\n" 4139
102b
4.根据线程id使用jstack观察线程信息
jstack 4130 |grep 102b
5.根据线程stack信息锁定问题
一般java应用cpu过高基本上是因为
- 程序计算比较密集
- 程序死循环
- 程序逻请求堵塞
- IO读写太高
- gc频繁fullGc