CPU占用过高排查步骤
CPU占用过高排查: ps -ef |grep java 查看内存分配
- 进入服务器 通过命令 top 查看CPU使用情况;记录PID,举例21045 (PID是进程标识符)
- 通过命令 ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 打印出前10条占用CPU高的进程信息 或者通过命令 ps aux | grep PID 来进一步确认是哪个具体的进程;举例 ps aux | grep 21045
- 通过命令 ps -mp pid -o THREAD,tid,time 或者 ps -mp pid -o THREAD,tid,time|sort -rn -k +2|head 打印出前10条占用CPU高的线程信息;举例 ps -mp 21045 -o THREAD,tid,time|sort -rn -k +2|head
- 找到占用耗时最高的线程tid(TID是进程标识符),通过命令 printf “%x\n” tid 将线程tid由十进制转为十六进制 ;举例 printf “%x\n” 22645 转化结果为5875
- 通过命令 jstack pid |grep tid -A 60 打印线程的堆栈信息 jstack 21045 |grep 5875 -A 60 具体分析哪块代码有问题