【Java面试】服务器CPU使用率飙升,如何排查?

简介

如果碰到服务器CPU使用率飙升,居高不下,该如何定位排查问题呢?

本文带大家实践一下,在使用Java时,碰到服务器CPU飙升该如何定位到具体的问题代码!

准备工作

1、代码准备

Main.java

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、在服务器上编译运行代码

java 复制代码
javac Main.java
java Main

查看CPU占用进程

bash 复制代码
top

找到异常的进程号

定位异常线程

通过命令

bash 复制代码
top -Hp <pid>

定位异常线程

线程号转为16进制

bash 复制代码
printf %x <tid>

jstack定位异常代码

bash 复制代码
jstack <pid> |grep -A 200 <16进制tid>

根据类名和行号,即可定位到问题代码

相关推荐
云边有个稻草人15 小时前
SQL Server数据迁移不只是“搬过去”:金仓如何让复杂查询越迁越快
后端
桦说编程15 小时前
盘点并发集合里那些容易误判的行为
java·后端·性能优化
云边有个稻草人15 小时前
时序数据库如何告别手工分片?看金仓“超表”怎样简化海量数据管理
后端
Java编程爱好者15 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
后端
IT爱学堂16 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言
evans在进步17 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
苍何17 小时前
偷偷分享 DeepSeek Harness 热榜挖到的 2 个实⽤插件
后端
神奇小汤圆17 小时前
面试官问:"你们上线前怎么测Agent系统?上线后怎么知道它好不好?"
后端
FfHUCisI17 小时前
Golang - 信号量模式(Semaphore Pattern)
开发语言·后端·golang
神奇小汤圆17 小时前
Redis 和 MySQL 如何保证数据一致性?先更新数据库还是先删缓存,延迟双删、MQ、Canal 一次讲透
后端