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