Linux 系统性能监控与瓶颈排查

📖 知识点简介

服务器出问题,能最快定位根因的能力就是性能监控。Linux 自带了一套性能诊断工具链,覆盖 CPU、内存、磁盘 IO、网络四大维度。掌握这些命令,可以在不装任何第三方工具的情况下,快速回答:「系统到底卡在哪?」


🛠 核心命令整理

1. CPU 监控

命令 用途 示例
top 实时查看进程 CPU/内存占用 top -bn1 一次性输出
htop top 增强版(需安装) 交互更友好
mpstat -P ALL 1 每核 CPU 使用率,每秒刷新 排查单核打满
uptime 显示负载均值 load average load > CPU核数 → 过载

top 关键字段说明:

  • us --- 用户态 CPU 占比
  • sy --- 内核态 CPU 占比(过高说明系统调用密集)
  • wa --- I/O 等待(过高 → 磁盘有瓶颈)
  • id --- 空闲百分比
  • st --- 被虚拟机偷走的 CPU(VM 环境常见)

2. 内存监控

命令 用途 关键参数
free -h 查看内存总量/已用/可用 -h 人类可读
vmstat 1 5 每 1 秒采样 5 次,含内存&CPU si/so 是 swap 换入/换出
cat /proc/meminfo 内存细粒度信息 含 PageCache、Slab 等

CPU + 内存二合一: vmstat 1

text 复制代码
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 123456  1024 456789    0    0    12    34  567  890 12  3 85  0  0
  • r:正在运行的进程数(CPU 排队),大于 CPU 核数说明 CPU 是瓶颈
  • b:阻塞在 I/O 的进程数(磁盘或网络)
  • si / so:swap 换入/换出,持续不为 0 → 内存不足

3. 磁盘 I/O 监控

命令 用途 关键参数
iostat -x 1 磁盘 I/O 详细报告 -x 扩展输出,1 每秒刷新
iotop 实时看哪个进程在疯狂 IO 需 root
df -h 磁盘空间使用率
du -sh * 当前目录大小排序 配合 sort -hr 使用
lsblk 查看块设备挂载关系

iostat 关键指标(关注点):

  • %util --- 磁盘繁忙率(> 80% 为瓶颈)
  • r/s + w/s --- 每秒读写次数(IOPS)
  • rkB/s + wkB/s --- 每秒吞吐量
  • await --- I/O 平均等待时间(ms),越大越慢
  • svctm --- I/O 服务时间(越接近 await 说明磁盘本身慢)

4. 网络监控

命令 用途 关键参数
ss -tuln 查看监听端口(替代 netstat) -t TCP, -u UDP
sar -n DEV 1 网卡流量实时统计
iftop 进程级别带宽占用 需安装
ping -c 10 延迟与丢包检测

5. 历史回溯(sar 神器)

sar 是 sysstat 包提供的系统活动报告器,可以回溯过去的数据。

bash 复制代码
# 查看今天整天的 CPU 使用率
sar -u

# 查看内存使用
sar -r

# 查看磁盘 I/O
sar -b

# 查看网络流量
sar -n DEV

💡 排查顺序建议: CPU 负载 → 内存使用 → 磁盘 I/O → 网络 → 应用日志 --- 逐层排查,不要跳跃。


🔧 实操示例:5 分钟定位服务器卡顿

场景: 接到告警,某 Web 服务器响应变慢,SSH 进去操作有延迟感。

bash 复制代码
# 第一步:看整体负载
uptime
# 输出:load average: 8.12, 6.34, 3.21  → 8核CPU,负载超8,异常

# 第二步:看 CPU 分布
top -bn1 | head -5
# wa 飙到 35% → I/O 瓶颈

# 第三步:查磁盘 I/O
iostat -x 1 3
# sda:  %util 92%, await 450ms → 磁盘扛不住了

# 第四步:定位哪个进程在写磁盘
iotop -o -P
# 发现 mysqld 进程正在大量写数据

# 第五步:确认 mysql 具体问题
mysql -e "SHOW PROCESSLIST;"
# 发现一条慢查询锁表导致大量写入

# 结论:慢 SQL 锁表 → 数据库夯住 → 磁盘写入堆积 → 系统响应变慢

⚠️ 常见坑点 & 注意事项

  1. free -m 看到的 used 不等于真实占用 --- Linux 用空闲内存做缓存(buff/cache),当应用需要时内核会释放,所以看 available 列而不是 free
  2. top 的 %CPU 可能超过 100% --- 这是多核累加值,单进程跑满 8 核显示 800%
  3. 磁盘 %util 到 100% 不一定是瓶颈 --- SSD 高 IOPS 场景下 100% 持续是正常的,要结合 await 看(超过 50ms 才报警)
  4. vmstatr 列 > CPU 核数 × 2 --- 说明 CPU 排队严重,需要扩容或优化
  5. 不要只看瞬时值 --- 用 sar 看趋势,或者用 vmstat 1 10 看 10 个采样点的平均值
  6. 别忘了系统日志 --- dmesg | tail/var/log/messages 经常藏着 OOM、磁盘 I/O error 等关键线索

💡 一句话总结: 性能排查三板斧 --- uptime 看负载,top 看分布,iostat / vmstat 定维度。找到短板,对症下药。

相关推荐
阳光是sunny8 分钟前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦27 分钟前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny28 分钟前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
皮皮林5511 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨1 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康2 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
腾渊信息科技公司3 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
IT_陈寒4 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学4 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
码事漫谈5 小时前
1999年的电商前夜和2026年的AI前夜 历史押韵但从不重复
后端