当前位置: 首页 > news >正文

系统突然出现 CPU 飙高,你如何排查?

场景二:如果系统突然出现 CPU 飙高,你如何排查?

CPU 飙高是线上非常紧急的故障。排查思路需要分两步走:先通过 Linux 命令定位是哪个进程、哪个线程出了问题,再结合 JVM 工具分析具体的代码原因。

第一步:Linux 系统层面的快速定位

  1. 确认负载情况:使用top命令查看系统整体负载(load average)和 CPU 使用率。按P键让进程按 CPU 占用率降序排列,迅速找到占用 CPU 最高的 Java 进程 PID。
  2. 定位具体线程:执行top -Hp <PID>,查看该 Java 进程下所有线程的 CPU 占用情况,找到占用 CPU 最高的线程 ID(TID)。
  3. 转换线程 ID:将找到的线程 ID(十进制)转换为十六进制,命令为printf "%x\n" <TID>。因为后续 JVM 堆栈中显示的线程 ID 是十六进制的。

第二步:JVM 应用层面的深度分析

  1. 导出线程堆栈:使用jstack <PID> | grep <十六进制TID> -A 20命令,打印出该高负载线程的堆栈信息。
  2. 分析堆栈信息(核心)
    • 业务代码死循环/复杂计算:如果堆栈指向了你自己的业务代码(如某个while循环、复杂的正则匹配、JSON 序列化等),说明是代码逻辑导致了 CPU 飙升。
    • 频繁 Full GC:如果堆栈中大量出现VM ThreadGC task thread,且 CPU 飙高,通常意味着系统内存不足,JVM 在疯狂进行 Full GC(即“GC 抖动”)。此时需要配合jstat -gcutil <PID> 1000观察 GC 频率,并使用jmap或 MAT 工具分析堆内存快照,排查是否存在内存泄漏或大对象分配。
    • 锁竞争激烈:如果堆栈显示大量线程处于BLOCKED状态,或者都在等待同一把锁,说明存在严重的锁竞争,导致 CPU 消耗在上下文切换上。

总结排查口诀
top找进程 ->top -Hp找线程 ->printf转十六进制 ->jstack抓堆栈 -> 分析代码逻辑或 GC 状况。

http://www.jsqmd.com/news/797320/

相关文章:

  • 告别OrthoFinder限制:用IQtree+Notung搞定跨物种基因家族树(附兰科NB-ARC实战)
  • 蓝叠模拟器抓包难题?用Proxifier+ Fiddler搞定HTTPS请求(保姆级图文教程)
  • WarcraftHelper魔兽争霸3终极优化指南:告别卡顿与兼容性问题
  • Bebas Neue字体技术深度解析:开源无衬线显示字体的现代排版解决方案
  • AI教材生成秘籍!低查重AI写教材工具,快速产出30万字优质教材!
  • 基于深度学习的遥感船舶SAR图像识别 YOLOv11在遥感图像船舶识别中的应用
  • 从ITF到DSPF:华大九天Empyrean RCExplorer在版图寄生分析中的实战解析
  • 企业数智化
  • OpenClaw 汉化版 Windows 一键安装指南|零基础 5 分钟部署 告别命令行
  • 云计算Linux——Nginx源码编译安装(十一)
  • TVA与传统视觉技术的本质区别——以机器人灵巧操控为例(10)
  • HFSS主从边界条件实战:用周期性边界快速搞定4x4微带天线阵仿真(附30GHz模型)
  • 别再只用默认样式了!LVGL Chart图表控件的10个美化技巧与高级样式配置
  • ZonyLrcToolsX:跨平台歌词下载解决方案与技术爱好者的音乐管理利器
  • Kotlin ViewModel
  • 智能体与世界模型“同源同宗”:当智能体足够强,世界模型就出来了
  • Vivado 2023.1 与 Questasim 2024.1 协同仿真环境搭建全攻略
  • League-Toolkit:基于LCU API的英雄联盟客户端自动化工具深度解析
  • 2025届毕业生推荐的十大AI辅助论文助手实际效果
  • D3KeyHelper暗黑3鼠标宏工具:从零开始掌握自动化战斗的终极指南
  • 必知必会:大模型位置编码RoPE与ALiBi位置编码详解
  • Android 11(R) MTK平台新分区实战:从分区表到SELinux的完整配置
  • 2025届必备的五大降AI率平台实测分析
  • 3大核心技术解密:LeagueAkari本地自动化工具架构设计与实战指南
  • sndcpy音频转发工具:Android设备音频镜像的完整指南
  • 终极风扇控制神器:FanControl 让你的电脑静音又凉爽
  • Obsidian官方同步插件 Nutstore Sync:冲突与增量同步指南
  • 【RHCA+】安装RHEL7操作系统
  • 实战指南:从零开始掌握Visual C++运行库一键修复的高效用法
  • ESP32-CAM图像显示进阶:对比RGB565直出与JPEG解码,哪种更适合你的ST7789屏幕?