Linux系统CPU与内存监控:专业工具与实战解析
核心监控工具详解与场景应用

基础性能仪表盘:top/htop
- top:默认实时视图显示进程级CPU/内存占用(%CPU/%MEM)、系统负载(load average)
- htop增强版:
- 树状进程结构可视化(F5)
- 鼠标交互与颜色分类(CPU密集型进程标红)
- 快捷键直接调整进程优先级(F7/F8)
实战案例:某次线上API响应延迟,通过htop发现某个Java进程持续占用380% CPU(4核机器),结合jstack定位到死循环代码段。
内存全景剖析:free与/proc/meminfo
free -m # 以MB为单位输出
关键指标解析:
- Available:真正可用内存(含buffer/cache回收空间)
- Swap使用率:持续高于20%需警惕内存瓶颈
进阶操作:
grep -E 'MemTotal|MemFree|Buffers|Cached|Swap' /proc/meminfo
获取原始内核数据,精确计算应用真实内存占用:
应用实际占用 = MemTotal MemFree Buffers Cached
系统级性能快照:vmstat(间隔2秒采样5次)
vmstat 2 5
输出关键列解析:
| 列名 | 含义 | 告警阈值 |
|———-|————————|——————-|
| r | 可运行进程数 | > CPU核数2倍 |
| wa | I/O等待CPU时间占比 | > 20% |
| si/so| 每秒swap换入/换出 | 持续>0 |

深度监控与历史数据分析
性能追踪利器:sar(sysstat包)
sar -u 1 3 # CPU使用率(%user/%system/%iowait) sar -r 1 3 # 内存页统计(kbmemfree/kbcommit) sar -B 1 3 # 分页活动(pgpgin/pgpgout)
独家经验:曾诊断某数据库凌晨慢查询,通过sar -q发现01:00时ldavg-15达12.8(8核服务器),结合cron日志定位到错误配置的备份任务。
进程级资源审计:pidstat
pidstat -urd -p 进程ID 2 10 # 每2秒采样,共10次
输出示例:
11:32:01 %usr %system %CPU kB_rd/s kB_wr/s %MEM
11:32:03 68.2 5.1 73.3 0.0 120.4 12.7
容器化环境专项监控
cgroup指标获取

# 查看容器内存限制 cat /sys/fs/cgroup/memory/memory.limit_in_bytes # 实时内存使用(含cache) cat /sys/fs/cgroup/memory/memory.usage_in_bytes
cAdvisor + Prometheus方案
部署架构:
容器Runtime → cAdvisor(数据采集)→ Prometheus(存储)→ Grafana(可视化)
成功案例:某微服务集群通过该方案发现某容器RSS内存持续达1.8GB(超过request 1.5GB),优化JVM堆参数后OOM发生率降为0。
FAQs深度解析
Q1:free显示available不足,但top无高内存进程?
可能由内核slab内存泄漏导致,验证方法:
slabtop -s c 查看slab占用排序
echo 2 > /proc/sys/vm/drop_caches 临时回收(生产环境慎用)
Q2:CPU负载高但%us很低是什么原因?
典型I/O瓶颈特征,检查方向:
iostat -x 1看%util和awaitpidstat -d 1定位高IO进程- 使用
perf record -g -p 进程ID分析系统调用
国内权威文献来源
- 倪光南.《Linux内核分析与高级教程》. 机械工业出版社, 2020.
- 阿里云技术团队.《云原生操作系统:性能调优与故障诊断》. 电子工业出版社, 2022.
- 华为《Linux系统性能监控白皮书》(内部技术文档编号:HEC-TR-2021-017)
- 清华大学计算机系.《操作系统原理与实践(第4版)》. 清华大学出版社, 2021.
- 中国信息通信研究院《云计算系统稳定性保障能力要求》(YD/T 4060-2022)行业标准













