场景面试题
- 面试官:线上一个服务突然CPU飙高,你会怎么排查
- 我:
- top 命令可以查看哪个进程CPU变高
- top -p
查看进程中哪个线程的导致CPU变高 类似这样: 1
2
3
4PID USER %CPU COMMAND
12345 xxx 300% java
└── 12367 98%
└── 12389 97% - 将线程id(tid) 转成16进制 printf “%x\n” tid
- jstack
> dump.txt 用jstack 查看进程的dump文件 jstack 是 JDK 自带的一个命令行工具,可以把 JVM 里所有线程当前在干嘛,全部打印出来。
dump 就是JVM中某个进程中的执行情况
- 在dump文件中查看 线程在干嘛 grep -A 20 “nid=0x303f” dump.txt
cpu升高的常见原因:
- 死循环 🔥
- 锁竞争 🔥
- 频繁GC 🔥
- IO阻塞
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Little Monste'Blog!
评论




