如何用 9 条命令在一分钟内检查 Linux 服务器性能?

文章导读
遇到服务器卡顿,先别急着重启,用这套命令组合能快速圈出是 CPU、内存还是 IO 出了问题,适合紧急故障排查场景。
📋 目录
  1. 环境准备:确保工具可用
  2. 命令速用版
  3. 分步实操与输出解读
  4. 验证与常见坑
A A

遇到服务器卡顿,先别急着重启,用这套命令组合能快速圈出是 CPU、内存还是 IO 出了问题,适合紧急故障排查场景。

先说结论:这 9 条命令是 Linux 运维社区长期总结的快捷检查组合,能覆盖大部分性能瓶颈,但不能替代深度分析。

  • 先定位:确认是系统负载高还是单个进程异常
  • 先做:优先检查 CPU 等待和内存可用量,排除硬件资源耗尽
  • 再验证:根据命令输出决定是扩容、优化代码还是调整配置

环境准备:确保工具可用

部分命令属于 sysstat 包,最小化安装的系统可能缺失。执行前请确认环境,建议提前安装。

# CentOS/RHEL
sudo yum install -y sysstat

# Ubuntu/Debian
sudo apt install -y sysstat

注意:多数命令需要 root 权限才能看到完整信息,建议在命令前加 sudo 或切换至 root 用户。

命令速用版

1. uptime
2. dmesg | tail
3. vmstat 1
4. mpstat -P ALL 1
5. pidstat 1
6. iostat -xz 1
7. free -m
8. sar -n DEV 1
9. top

重要提示:带参数 1 的命令会持续每秒输出,按 Ctrl+C 可停止。若只需查看指定次数,可加次数参数,如 vmstat 1 5 表示采样 5 次后自动停止。

分步实操与输出解读

第一步:看系统负载和历史

运行 uptime 查看最近 1、5、15 分钟的负载平均值。如果数值超过 CPU 核心数,说明有排队现象。

如何用 9 条命令在一分钟内检查 Linux 服务器性能?
 10:30:05 up 10 days,  2:30,  1 user,  load average: 0.50, 0.80, 1.20

接着运行 dmesg | tail 检查内核日志,确认是否有 OOM(内存溢出)杀进程或硬件报错记录。

第二步:查内存和交换分区

运行 free -m。重点看 available 列,而不是 used 列。Linux 会把空闲内存用于缓存,used 高不代表内存不足。

              total        used        free      shared  buff/cache   available
Mem:           7982        1200         500          10        6282        6500
Swap:          2048           0        2048

如果 swap 使用量持续增加,说明物理内存确实不够。

第三步:查 CPU 和进程

运行 sudo mpstat -P ALL 1 查看每个核心的使用情况,确认是否单核瓶颈。配合 sudo pidstat 1 找出具体是哪个进程占用了 CPU 或发生了频繁上下文切换。

第四步:查磁盘和网络

如何用 9 条命令在一分钟内检查 Linux 服务器性能?

运行 sudo iostat -xz 1,关注 %util 和 await 列。如果 %util 接近 100% 或 await 很高,说明磁盘 IO 是瓶颈。

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              0.50    1.20      4.00     12.00     0.00     0.10   0.00   2.00    0.10    0.20   0.00     8.00    10.00   0.50  0.08

运行 sudo sar -n DEV 1 查看网卡流量,确认是否打满带宽。

第五步:综合监控

最后运行 tophtop 保持实时观察,配合前面的数据做最终确认。按 q 键可退出 top。

验证与常见坑

检查的目的是为了找到方向,验证标准是“是否找到了资源瓶颈”。

  • 如果 vmstat 的 si/so 列有数值,说明 swap 在频繁交换,内存不足。
  • 如果 iostat 的 %util 长期高于 80%,说明磁盘 IO 饱和。
  • 如果 mpstat 显示某核 100% 而其他空闲,说明程序多线程优化有问题。

常见避坑指南:

  • 命令不存在:需提前安装 sysstat 包。
  • 权限不足:遇到 Permission denied 请加 sudo。
  • 误判内存:重点看 available,不要只看 free。
  • 命令停不下来:持续采样命令请按 Ctrl+C 强制停止。
  • 采样时间:只跑一两秒可能看不到波动,建议观察至少一个业务周期。