Linux 系统监控与性能分析入门:top、htop、vmstat 与 iostat 实战

举报
yd_244110823 发表于 2026/11/11 06:09:02 2026/11/11
【摘要】 用 top、htop、vmstat 与 iostat 四个工具,5 分钟定位 Linux 服务器变慢的瓶颈在 CPU、内存还是磁盘,并给出完整的排查流程与新手建议。

在云服务器上跑业务,最怕的不是报错,而是“变慢了,却不知道慢在哪里”。用户说页面打开要等几秒,日志里又没有明显异常,这时最可靠的办法,是回到系统层面,用最基础的监控命令把 CPU、内存、磁盘和网络逐一排查一遍。本文以一台常见的 Linux 云服务器为例,介绍 top、htop、vmstat 与 iostat 的入门实战用法。

一、先建立判断顺序:不要一上来就重启

遇到变慢,先问三个问题:是 CPU 不够,还是内存不够,还是磁盘或网络在等?很多新手一看到 load 高就认为是 CPU 问题,其实 load 高也可能是大量进程在等磁盘。正确顺序是:先用 uptime 看负载,再用 top 看是谁在占用资源,最后用 vmstat 和 iostat 区分是计算瓶颈还是 IO 瓶颈。

uptime
top

uptime 输出的三个数字,分别是过去 1 分钟、5 分钟、15 分钟的平均负载。单核机器负载长期大于 1,多核机器负载长期大于核数,才值得紧张;如果只是短暂冲高,往往是定时任务或备份在跑。

二、top:先找到“吃资源”的进程

top 是最常用的实时监控工具。打开后默认按 CPU 占用排序,重点看三行:第一行的 load average,第二行的任务状态,第三行的 %Cpu(s),以及下面的进程列表。

  • us 高:用户进程确实在大量计算,例如业务高峰或某个循环写错了;
  • sy 高:系统调用频繁,可能是频繁创建进程、大量网络包或文件操作;
  • wa 高:CPU 在等磁盘 IO,这时加 CPU 没用,要去看磁盘;
  • id 高:CPU 空闲,变慢的原因不在 CPU。

在 top 里按 M 可以按内存排序,按 P 回到按 CPU 排序,按 1 可以展开每个 CPU 核的使用情况。如果某个进程的 CPU 长期占满一个核,先看它是不是可以优化的业务代码,而不是急着升级配置。

三、htop:更直观的 top

htop 可以理解为彩色、交互更好的 top。没有安装时可以用系统的包管理器安装,例如 sudo apt install htop 或 sudo yum install htop。它用不同颜色区分 CPU、内存和交换分区,支持用方向键选择进程,用 F9 结束进程,用鼠标点选排序列。

对新手来说,htop 最大的好处是直观:顶部的彩色 CPU 条一眼就能看出是单核跑满还是多核均衡,内存条能看出是否快用完、是否在用交换分区。需要注意的是,htop 本身也会占用少量资源,排查时不要只盯着它自己的占用。

四、vmstat:看内存、交换与上下文切换

top 看的是瞬间,vmstat 更适合看趋势。常用的是:

vmstat 1 5

意思是每 1 秒采样一次,共 5 次。重点看 si 与 so:它们是每秒换入、换出交换分区的量。如果这两个值持续大于 0,说明内存已经不够,系统在用磁盘当内存,性能会明显下降,这时要先释放内存或扩容,而不是调业务参数。

还要看 r 列:等待运行的进程数。如果 r 长期大于 CPU 核数,说明 CPU 排队严重;b 列长期大于 0,则说明有进程在等 IO。再看 cs(上下文切换)和 in(中断):数值突然暴涨,往往对应大量短连接、频繁创建线程或硬件中断异常。

五、iostat:确认是不是磁盘在拖后腿

当 wa 高或 vmstat 的 b 列偏高时,就轮到 iostat:

iostat -x 1 3

重点看 %util 与 await。%util 接近 100%,说明磁盘已经接近饱和;await 是每次 IO 的平均等待时间,普通云盘超过几十毫秒就要警惕,持续上百毫秒通常意味着业务已经被磁盘拖慢。还要区分读和写:r/s 与 w/s 分别是每秒读、写次数,如果写远大于读,要先查日志写入、备份或数据库刷盘。

一个常见误区是把磁盘空间满和磁盘 IO 慢混为一谈:空间满是 df -h 的事,IO 慢是 iostat 的事,两者要分开查。

六、一个完整的排查流程

假设一台 ECS 上的网站突然变慢,可以按下面顺序走一遍,全程不到五分钟:

  1. uptime 与 top:确认负载和最耗资源的进程,记下进程名与 PID;
  2. free -h:确认内存与交换分区,排除内存不足;
  3. vmstat 1 5:确认是 CPU 排队还是 IO 等待;
  4. iostat -x 1 3:确认磁盘利用率与等待时间;
  5. 再看业务日志与网络:用 ss -s 或 ping 排除网络问题。

如果最后发现是某个定时备份在业务高峰跑,调整备份时间往往比升级配置更有效;如果发现是日志写得太频繁,改成按级别写日志、定期轮转,效果也很明显。

七、给新手的三点建议

第一,先建立基线:业务正常时记一次 top、vmstat、iostat 的数值,异常时才有对比。第二,不要只看一次采样:至少连续看 5 次,排除瞬间抖动。第三,云上要结合云监控:系统命令看到的是机器内部,云监控能看到带宽、磁盘、弹性公网 IP 等更完整的曲线,两者结合才不容易误判。

系统监控并不难,难的是养成“先定位、再动手”的习惯。把 top、htop、vmstat、iostat 这四个工具练熟,下次服务器变慢时,你至少能在五分钟内说出瓶颈在 CPU、内存还是磁盘,而不是凭感觉重启或升级。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。