1. top -d 1
命令解释:进程界面每1s刷新一次
2.top -H -p pid或者 ps -mp pid -o THREAD,tid,time | sort -rn
命令解释:查看指定进程中各线程的状态,选出最繁忙的线程tid
3.printf "%x " tid
命令解释:将线程ID转换为十六进制
4. jstack pid | grep tid -A30
命令解释:查看线程的堆栈信息
接下来就是排查代码了。
CPU负载过高有几方面原因:
- 程序计算密集
- 程序死循环
- 多线程阻塞
- IO读写频繁