简介
如果碰到服务器CPU使用率飙升,居高不下,该如何定位排查问题呢?
本文带大家实践一下,在使用Java时,碰到服务器CPU飙升该如何定位到具体的问题代码!
准备工作
1、代码准备
Main.java
1 | public class Main { |
这里写一个circle方法,方法里面是一个while死循环。
2、在服务器上编译运行代码
1 | javac Main.java |
查看CPU占用进程
1 | top |
找到异常的进程号
定位异常线程
通过命令
1 | top -Hp <pid> |
定位异常线程
线程号转为16进制
1 | printf %x <tid> |
jstack定位异常代码
1 | jstack <pid> |grep -A 200 <16进制tid> |
根据类名和行号,即可定位到问题代码