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

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

相关推荐
喵了个Code6 小时前
输入URL后,浏览器居然悄悄做了这么多事 | 面试必问(万字长文)
后端
我是苏苏6 小时前
Web开发:一图简述OAuth 2.0授权流程中的一些关键步骤
后端
catgod0076 小时前
基于 CentOS 7.6 的 MySQL 8.0 主从复制
后端
悟能不能悟6 小时前
Java CheckFailedException会去获取message.properties的内容吗
java·开发语言
shang_xs6 小时前
Java 25 ScopedValue - 作用域内安全访问的一种实现
java·开发语言·安全
小途软件6 小时前
基于深度学习的驾驶人情绪识别
java·人工智能·pytorch·python·深度学习·语言模型
明天有专业课6 小时前
简简单单设计模式-策略
后端
小白学大数据6 小时前
Java 异步爬虫高效获取小红书短视频内容
java·开发语言·爬虫·python·音视频
我命由我123456 小时前
Android Jetpack Compose - Compose 重组、AlertDialog、LazyColumn、Column 与 Row
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
愤怒的代码6 小时前
在 Android 中执行 View.invalidate() 方法后经历了什么
android·java·kotlin