【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>

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

相关推荐
美好的事情能不能发生在我身上5 小时前
Hot100中的:贪心专题
java·数据结构·算法
myloveasuka5 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
Andya_net5 小时前
Spring | @EventListener事件机制深度解析
java·后端·spring
lang201509285 小时前
18 Byte Buddy 进阶指南:解锁 `@Pipe` 注解,实现灵活的方法转发
java·byte buddy
重庆小透明6 小时前
【java基础篇】详解BigDecimal
java·开发语言
无限大66 小时前
《AI观,观AI》:专栏总结+答疑|吃透核心,解决你用AI的所有困惑
前端·后端
小杍随笔6 小时前
【Rust 语言编程知识与应用:基础数据类型详解】
开发语言·后端·rust
毅航6 小时前
告别 AI 名词焦虑:一文读懂从 LLM 到 Agent Skill的演进
人工智能·后端
杰克尼7 小时前
苍穹外卖--day08
java·数据库·spring boot·mybatis·notepad++
lierenvip7 小时前
SQL 建表语句详解
java·数据库·sql