【JVM基础19】——实践-CPU飙高排查方案和思路?

目录

  • [1- 引言:](#1- 引言:)
  • [2- ⭐核心:](#2- ⭐核心:)
    • [2-1 排查方案与思路](#2-1 排查方案与思路)
  • [3- 小结:](#3- 小结:)
    • [3-1 如何排查 CPU 飙高问题?](#3-1 如何排查 CPU 飙高问题?)

1- 引言:

  • CPU 飙高指的是项目在运行过程中导致服务器的 CPU 内存占用较高。

2- ⭐核心:

2-1 排查方案与思路

  1. 使用 top 命令查看占用 CPU 的情况
bash 复制代码
top
  1. 通过 top 命令查看后,可以查看是哪一个进程占用 CPU 较高,上图所示为 2266
  • 找到进程之后,目的是找到 java 项目中的哪一行代码导致 CPU 飙高的问题,由于代码的运行都是在线程中运行,
  1. 使用 ps 的 Linux 指令
bash 复制代码
ps -H -eo pid,tid,%cpu | grep 2266
  • 打印出了所有 2266 进程中的线程,可以看到其中 2276 占用 CPU 特别高
  1. 使用 一下 jstack + 进程 id
bash 复制代码
jstack 2266
  • 此时打印出所有线程的信息,可需要筛选出 上述 CPU 占用高的线程,2276
  • 同时 jstack 打印的信息中的线程 id 都是十六进制,因此需要通过 Linux 命令将十进制转为 十六进制
  1. 使用 Linux 将十进制线程 id 转为 十六进制
  • 通过 十六进制 的线程 id 找到对应的信息,定位到代码行
bash 复制代码
printf "%x\n" 2276

3- 小结:

3-1 如何排查 CPU 飙高问题?

相关推荐
佳児素花痴╮15 小时前
线程知识点
java·开发语言·jvm
用户0942485680320 小时前
第29章:【OpenJDK中级篇综合实战】百万长连接网关的JVM稳定性工程
java·jvm
夜之眷属21 小时前
JVM实战:服务器堆外内存去哪了(NMT实测)
java·服务器·jvm·后端·性能优化
智码看视界21 小时前
Day84-Arthas诊断实战:CPU飙高/死锁/内存泄漏排查三板斧
jvm·内存泄漏·arthas·死锁·性能诊断·生产调优
万年咸鱼1 天前
C语言内功心法篇——变量与数据类型
c语言·jvm·算法
rannn_1111 天前
JVM 垃圾回收面试题全解析:从基础到进阶
java·开发语言·jvm·后端·面试
rannn_1111 天前
JVM 面试题:类加载过程详解(附高频考点)
java·jvm·后端
Shaoshing2 天前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼2 天前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
估值探索者2 天前
【Python量化系统工程实战 #08】从脚本到生产:量化系统上线 checklist 的最小闭环
java·开发语言·jvm·python·数据挖掘·数据·股票数据api接口