分层排查是查看服务器运行状态与性能瓶颈最有效的方法:先通过uptime和top进行系统整体概览,对比负载值与CPU核心数,并观察%wa等关键指标;再按CPU、内存、磁盘、网络四个维度,分别使用mpstat、free、iostat、ss等命令逐项定位瓶颈;最后借助top排序、ps、lsof等工具锁定异常进程并继续深入分析。

想要快速查看系统运行状态和性能瓶颈,最实用的方法就是分层排查:先看全局,再聚焦局部。通常不需要额外安装大量监控工具,借助 Linux 自带命令就能高效判断服务器性能问题并完成初步定位。
一、第一时间掌握服务器整体健康状态
执行 uptime 和 top 两个命令,通常在 3 秒内就能获得关键的系统性能判断依据:
- uptime 输出的三个负载值(1/5/15 分钟),需要结合 CPU 核心数一起判断。例如 4 核服务器,如果负载持续高于 4,通常说明有进程正在排队等待系统资源
- top 默认界面顶部会显示 CPU 使用率拆分(us/sy/id/wa/st)、内存总量与可用量(重点看 a vailable 列,而不是 free)、以及 swap 使用情况。若 wa 值长期高于 20%,大概率说明磁盘 I/O 正在拖慢系统运行
- 按 1 键可以展开查看每个 CPU 核心的使用情况,避免出现单核占满、其他核心空闲却不易发现的问题
二、按资源类型精准分析性能瓶颈
当发现系统存在异常后,可以使用更有针对性的命令深入排查对应资源维度:
- CPU 瓶颈:使用 mpstat -P ALL 1 查看各核心详细使用率;使用 pidstat -u 1 查看每秒是哪个进程消耗了最多 CPU 时间
- 内存瓶颈:使用 free -h 查看 a vailable 是否持续偏低;使用 vmstat 1 观察 si/so 是否非零(如果存在换入换出,通常说明物理内存不足)
- 磁盘 I/O 瓶颈:使用 iostat -xz 1 重点关注 %util(接近 100% 表示磁盘设备接近饱和)、r_await/w_await(平均响应时间,超过 10ms 需要警惕)、%iowait(CPU 等待 IO 的比例)
- 网络瓶颈:使用 ss -s 查看连接总数及各类状态分布;使用 sar -n DEV 1 检查网卡收发速率与丢包率
三、快速锁定异常或高占用进程
top 或 htop 只是排查系统性能问题的起点,真正解决服务器卡顿或资源异常,还需要继续向下深挖:
- 在 top 中按 P(CPU)或 M(内存)排序,先找到排名第一的进程 PID
- 使用 ps -o pid,ppid,comm,%cpu,%mem,time,args -p [PID] 查看它的父进程、启动命令以及已运行时长
- 对于 Ja va 进程,可使用 top -H -p [PID] 查找高 CPU 线程,再通过 jstack [PID] | grep -A20 [十六进制线程ID] 查看线程堆栈信息
- 对于任意进程,使用 lsof -p [PID] 查看它当前打开的文件或网络连接,往往能发现日志写满、连接泄漏等常见故障
四、不要忽略基础但关键的系统检查项
很多看似复杂的“性能瓶颈”问题,实际上往往来自配置、磁盘空间或运行环境本身:
- 使用 df -h 确认磁盘空间是否充足,尤其要重点检查 /var/log、/tmp 以及应用日志目录
- 使用 uname -r 和 cat /proc/cpuinfo | grep "model name" | head -1 确认当前内核版本与 CPU 型号,老旧内核或低频 CPU 往往会限制服务器性能上限
- 使用 systemctl list-units --state=failed 检查是否存在服务异常退出的情况,因为这类问题可能引发连锁故障
- 使用 dmesg -T | tail -20 查看最近内核日志中是否出现 OOM killer 杀进程、硬件报错等严重事件
