当前位置:首页>Linux>SRE级别的 Linux CPU / 内存告警排查“体系化方法论”

SRE级别的 Linux CPU / 内存告警排查“体系化方法论”

  • 2026-09-24 06:25:50
SRE级别的 Linux CPU / 内存告警排查“体系化方法论”

一、总体思路(核心方法论)

可以记住一个统一模型:

👉 “现象 → 定位 → 分析 → 归因 → 处置 → 预防”

对应拆解:

阶段
目标
现象
CPU/内存是否异常?持续还是瞬时?
定位
哪个进程/服务导致?
分析
为什么高?(逻辑/流量/资源问题)
归因
应用问题 or 系统问题
处置
降负载 / 限流 / 重启 / 扩容
预防
监控 + 限制 + 优化

二、CPU告警排查(高CPU 100%)

1️⃣ 快速判断(1分钟内)

uptimetop

重点看:

  • load average(负载)
  • us(用户态)
  • sy(内核态)
  • wa(IO等待)

👉 判断方向:

指标
含义
排查方向
us高
应用计算多
代码/算法
sy高
系统调用多
IO / 内核
wa高
IO阻塞
磁盘 / NFS
load高
队列积压
资源瓶颈

2️⃣ 定位高CPU进程

top -cps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head

👉 找出:

  • 哪个进程占用最高
  • 是否持续占用

3️⃣ 定位线程级问题(关键)

top -H-p <pid>或:ps -mp <pid> -o THREAD,tid,time

👉 结合:

printf "%x\n" <tid>

用于分析 Java:

jstack <pid>

4️⃣ 深入分析工具

🔹 perf(生产级)

perf topperf record -p <pid>perf report

👉 分析热点函数(CPU耗在哪)


🔹 strace(系统调用)

strace -p <pid>

👉 判断是否:

  • 死循环
  • IO卡住
  • 频繁系统调用

🔹 pidstat(趋势分析)

pidstat -u1

5️⃣ 常见原因总结

场景
说明
死循环
代码bug
高并发
流量突增
GC频繁
Java问题
锁竞争
多线程
IO等待
磁盘慢

6️⃣ 应急处理

kill -15 <pid>kill -9 <pid>   # 最后手段

或:

  • 限流(Nginx / 网关)
  • 扩容(K8s / VM)
  • 降级(关闭非核心功能)

三、内存告警排查(OOM / 内存高)

1️⃣ 快速判断

free -m

重点:

  • used
  • available
  • swap

2️⃣ 内存结构分析

cat /proc/meminfo

关键指标:

参数
含义
MemAvailable
可用内存
Buffers
缓冲
Cached
缓存

👉 注意:

❗ Linux “内存高 ≠ 问题”,缓存可回收


3️⃣ 定位内存占用进程

ps aux --sort=-%mem | head

4️⃣ 深入分析(核心)

🔹 pmap

pmap -x <pid>

🔹 smem(更精准)

smem -rk

🔹 top + RES

关注:

  • RES(真实内存)
  • VIRT(虚拟内存)

5️⃣ OOM 排查(关键)

dmesg | grep -i oom

或:

journalctl -k | grep -i oom

👉 看:

  • 被杀进程
  • OOM原因

6️⃣ 内存泄漏判断

👉 特征:

  • 内存持续上涨
  • 不释放

工具:

valgrind

Java:

jmap -heap <pid>jmap -dump:format=b,file=heap.hprof <pid>

7️⃣ 常见原因总结

场景
说明
内存泄漏
程序问题
缓存过大
Redis / JVM
大对象
数据处理
线程过多
栈内存
swap频繁
内存不足

8️⃣ 应急处理

echo 1 > /proc/sys/vm/drop_caches

(⚠️慎用)

或:

  • 重启服务
  • 降低缓存
  • 扩容内存

四、CPU + 内存联动问题(重点)

很多事故是组合型问题:

场景
现象
内存不足 → swap
CPU升高
GC频繁
CPU 100%
IO慢
CPU wa高
线程爆炸
CPU+内存双高

五、SRE级排查流程(面试可直接讲)

👉 标准流程:

1. 告警触发(Prometheus/Zabbix)2. 快速确认(top/free/uptime)3. 定位进程(ps/top)4. 线程分析(top -H)5. 深度分析(perf/strace)6. 判断类型(CPU型/IO型/内存型)7. 应急处理(kill/限流/扩容)8. 根因分析(代码/架构)9. 复盘(监控 + 自动化)


六、生产级最佳实践(重点加分)

✅ 1. 监控体系

  • CPU、Load、Memory、Swap
  • 进程级监控
  • JVM监控(GC)

✅ 2. 限制机制

ulimitcgroup


✅ 3. 自动化防护

  • OOM自动重启
  • CPU异常自动限流
  • 熔断机制

✅ 4. 容量规划

  • 预留30%资源
  • 峰值压测

七、一句话总结(面试金句)

👉 CPU问题本质是“算不过来”,内存问题本质是“装不下”,而SRE要做的是“提前避免”而不是“事后处理”。

最新文章

随机文章