最有效方式是分层排查:先用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)、内存总量与可用量(注意看 available 列,不是 free)、swap 使用情况。wa 值长期高于 20%,大概率是磁盘在拖慢系统
- 按 1 键展开查看每个 CPU 核心的占用,避免单核打满而其他核空闲
二、按资源类型精准定位瓶颈
发现异常后,用专用命令深入对应维度:
- CPU 瓶颈:用 mpstat -P ALL 1 查各核详细使用率;用 pidstat -u 1 查每秒哪个进程消耗最多 CPU 时间
- 内存瓶颈:用 free -h 看 available 是否持续偏低;用 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] 查它的父进程、启动命令和运行时长
- 对 Java 进程,用 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 杀进程、硬件报错等严重事件











