做服务器运维的兄弟应该都听过一句经典的求救消息:服务器卡了,帮我看看。“卡”这个字背后其实藏着完全不同的处境——CPU忙到转不过来、内存耗尽开始疯狂换页、带宽跑满导致业务请求堵在门口,甚至三者同时发生,你连命令行都敲不利索。如果只拿 top 瞄一眼就下结论,十次有八次会跑偏。这篇内容把 Linux 服务器性能排查里最常用的 CPU、内存、带宽指标从查询命令到分析逻辑串成一条线,帮你看清一个故障背后到底是哪类资源不够,以及如何用一套命令快速定位高亮进程和流量来源。刚接手服务器的新人可以直接照做,偶尔需要救急的开发也能当速查手册用。
1. 先别急着下结论:CPU、内存、带宽的排查顺序是门技术活
很多人拿到“服务器慢”的信号,第一反应就是冲到机器面前敲 top。top 确实能看全局,但光看一屏数字没用,你得先判断这个“慢”属于哪一类:是 CPU 耗尽导致请求排队,是内存不足导致频繁 swap,还是网络吞吐不够导致用户侧一直打转。判断错了,后面花再多时间都白搭。
1.1 不同故障表象背后,对应的指标完全不同
我习惯先把问题现象拆成三类,再决定走哪条排查路径。
| 用户/业务表现 | 最可能的瓶颈 | 第一眼要看的数据 | 核心命令 |
|---|---|---|---|
| CPU 长时间高位,接口响应慢 | CPU 算力不够或进程死循环 | load average、us/sy/wa、进程 CPU% | top、mpstat、pidstat |
| 频繁卡顿,但界面看 CPU 并不高 | 内存不足/swap、磁盘等待 | available、si/so、iowait、D 状态进程 | free、vmstat、pidstat -d |
| 页面加载极慢、视频转圈、下载速度低 | 带宽不足、网络延迟、TCP 队列堆积 | 网卡 rx/tx、连接状态、丢包率 | sar -n DEV、iftop、mtr、ss |
| 服务偶发超时,CPU 内存都正常 | 连接数/端口/文件句柄不足 | TIME_WAIT、ESTABLISHED、句柄数 | ss -s、ss -tan、ulimit |
这张表不绝对,但能给个大概方向。比如用户反馈“网站能打开,就是慢得像幻灯片”,你如果一直盯着 CPU 和内存看,可能什么都看不出来,实际上只要用 `sa
