news 2026/6/23 17:43:39

线上CPU 100% 全流程排查步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线上CPU 100% 全流程排查步骤

一、第一步:服务器层面定位(Linux命令,先确认是系统/应用占用)

1. 整机CPU概览

top# 实时查看整机CPU、进程占用,shift+p按CPU排序uptime# 看1/5/15分钟负载,判断瞬时冲高还是持续满载
  • 重点:%Cpu(s) us用户态、sy内核态、id空闲
    • us高:应用代码逻辑耗CPU(Java业务死循环、密集计算)
    • sy高:系统调用频繁、内核问题、频繁GC/IO阻塞、线程上下文切换爆炸
    • id≈0:CPU打满;id高但负载高:IO等待高(wa高)

2. 定位占用CPU最高的进程PID

top-H# 显示进程+所有线程,线程维度看CPUpidstat-u1# 每秒输出进程CPU占用

记下占用CPU最高PID(假设PID=1234,Java进程)。

二、第二步:Java进程内部 → 哪个线程耗CPU(核心经典步骤)

1. 导出Java进程所有线程栈

  1. 拿到高CPU进程PID:jps -l列出所有Java进程
  2. top -Hp 1234查看该进程下CPU最高的线程TID(十进制)
  3. 十进制TID转十六进制:printf "%x\n 线程TID"(例:12345 → 0x3039)
  4. 打印线程堆栈:
jstack1234>jstack.log# 或arthas一键:thread -n 5
  1. 在jstack.log搜索十六进制0x3039,找到对应线程栈,直接定位代码行。

高频问题:死循环、无限while、大数据量循环遍历、正则回溯、频繁创建对象。

三、第三步:区分是【代码业务耗CPU】还是【GC疯狂消耗CPU】

1. 查看GC指标

jstat-gcPID1000# 每秒打印GC,S0/S1/Eden/O/M,YGC/FGC次数与耗时

判断:

  1. YGC频繁暴涨、FGC频繁、Full GC耗时高 → GC导致CPU100%
    原因:内存泄漏、大对象频繁创建、堆太小、不合理大内存分配。
  2. GC次数正常 → 业务代码逻辑占用CPU(死循环/密集运算)

2. 堆快照排查内存泄漏

jmap-dump:format=b,file=heap.hprof PID

heap文件下载后用MAT/JProfiler分析:大对象、泄漏对象、不合理缓存。

四、第四步:Arthas一键排查(线上首选,不用重启服务)

# 1. 安装启动curl-Ohttps://arthas.aliyun.com/arthas-boot.jar&&java-jararthas-boot.jar# 2. 找出CPU最高5个线程thread-n5# 3. 查看方法耗时(定位热点方法)profiler start;sleep30;profiler stop--formathtml

profiler生成火焰图:横向越长代表CPU占用越高,直接定位耗CPU方法。

五、第五步:补充系统侧异常排查

  1. 上下文切换过高vmstat 1cs列飙升 → 大量线程频繁切换(线程池不合理、自旋锁滥用)
  2. 软中断高cat /proc/softirqs网卡中断暴高 → 网络流量打满、大量连接
  3. 磁盘IO拉高CPUiostat -x 1 %iowait高,大量同步刷盘、频繁落库。

六、常见根因汇总

  1. 业务代码:死循环、嵌套循环、全表循环遍历、低效正则、大数循环计算
  2. GC问题:内存泄漏、超大对象、堆参数过小、频繁创建短命大对象
  3. 框架/中间件:连接池参数不合理、死锁自旋、定时任务密集调度
  4. 系统:大量TCP连接、磁盘爆满刷盘、内核bug

七、应急临时处理

  1. 紧急下线定时任务/流量降级,切流量;
  2. 临时重启实例(集群环境优先一台重启保可用);
  3. 临时调大堆参数缓解GC。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 17:43:18

FPGA FIR滤波器设计:Avalon-ST接口迁移与Quartus II 7.2实战指南

1. 项目概述:从 Quartus II 6.0 到 7.2 的 FIR 设计变迁最近在升级一个老项目的开发环境,把 Quartus II 从 6.0 版本换到了 7.2,配套的 IP 核自然也更新了。本以为只是版本号变了,工具用起来会更顺手,结果在设计一个 F…

作者头像 李华
网站建设 2026/6/23 17:43:35

从刺绣到触控:基于压阻织物的柔性多点触控传感器DIY指南

1. 项目概述:当织物成为触摸板在智能硬件和可穿戴设备领域,我们总在追求更自然、更无缝的人机交互方式。传统的刚性触摸屏或物理按键,在应用到衣物、配饰或柔性表面时,常常显得格格不入。几年前,我在参与一个关于“个人…

作者头像 李华
网站建设 2026/6/14 5:33:24

树莓派物联网实战:继电器控制与远程泡泡机改造

1. 项目概述与核心思路 几年前,我在一个创客展上看到孩子们围着一个简单的泡泡机玩得不亦乐乎,但操作它的家长却需要不停地弯腰、按开关、补充泡泡液。当时我就在想,能不能让这个简单的快乐变得更轻松、更有趣一些?于是&#xff…

作者头像 李华
网站建设 2026/6/14 5:33:23

芯片制造全流程解析:从硅砂到封装,揭秘纳米级工艺

1. 从一粒沙到一颗芯:芯片制造的宏观图景 很多人手里拿着手机,用着电脑,都知道里面最核心的部件叫CPU或者芯片,但可能很少有人会去想,这个比指甲盖还小的东西,究竟是怎么从随处可见的沙子变出来的。这听起来…

作者头像 李华
网站建设 2026/6/14 5:33:22

电子行业付款风险解析:从账期、承兑汇票到供应链博弈的生存指南

1. 电子行业付款现状:一个资深采购的“血泪账本” 干了十几年电子行业的采购和供应链管理,从元器件分销商到整机厂都待过,今天看到同行讨论上市公司的付款问题,真是戳到了心窝子里。这行当,表面光鲜亮丽,什…

作者头像 李华