这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的。线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因?
这就是一个套路题,所谓套路题就是有标准的套路解法的,掌握了套路,不仅能解决面试官,还能解决问题。不然真的就掉进套路里了。
当我们真碰到这个问题的时候应该怎么排查呢?
模拟一个高 CPU 场景
先用一段程序创建几个线程,将其中一个线程设置成高 CPU 使用率的。
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
Thread thread = new Thread(() -> {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(30 * 60 * 1000);
}catch (Exception e){
e.printStackTrace();
}
});
thread.setName("thread-" + i);
thread.start();
}
Thread highCpuThread = new Thread(() -> {
int i = 0;
while (true) {
i+&#