假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位
记一次印象深刻的故障?
结合Linux 和 JDK命令一起分析,步骤如下
-
使用top命令找出CPU占比最高的
-
ps -ef 或者 jps 进一步定位,得知是一个怎么样的后台程序出的问题
-
定位到具体线程或者代码
- ps -mp 进程 -o THREAD,tid,time
- 参数解释
- -m:显示所有的线程
- -p:pid进程使用CPU的时间
- -o:该参数后是用户自定义格式
-
将需要的线程ID转换为16进制格式(英文小写格式)
- printf “%x\n” 有问题的线程ID
-
jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
精准定位到错误的地方