Web服务启动以后,服务器CPU使用率瞬间飙升到90%。此时接口服务频繁超时。服务器
因为短期没法定位和修复问题,以避免影响终端用户操做体验,采起了回滚操做。线程
通常一个应用CPU使用率很高,一般都是因为程序中的死循环引发的。接口
####一、使用 top 命令查看占用 CPU 较高的进程 进程
能够看到 PID 为 26484 这个进程的 CPU 占用率最高。it
####二、定位具体进程 使用 'ps aux | grep 26484' 或 'ps -ef | grep 26484' 命令,定位到具体的进程循环
####三、查看进程下的线程 CPU 占用状况 使用 'ps -mp 26484 -o THREAD,tid,time | sort -rn' 命令打印出该进程下的线程占用 CPU 状况终端
能够看到 TID 为 26762 的这个线程占用 CPU 最高 ####四、线程 ID 转换为 16 进制格式 使用 'printf "%x\n" 26762' 命令将线程 ID 转换为 16 进制格式, 以方便下一步查询线程堆栈信息grep
####五、查看线程堆栈信息 使用 'jstack 26484 |grep 688a -A 30' 命令打印出高 CPU 占用的线程 26762 的堆栈信息, 以下:程序
从上面的输出结果就能够定位到具体出问题的代码, 最后就是仔细分析代码,解决问题。im