Linux性能快速诊断:60秒搞定!

一、为什么要60秒定位?

场景:半夜被报警吵醒,老板群里催命,用户抱怨网站打不开。

目标:用最短的时间(60秒)找出哪个硬件资源(CPU/内存/磁盘/网络)出问题了,然后立刻**"止血"**。

原则

  • 先救命,再治病——先让系统不崩溃,再慢慢找根本原因。
  • 命令要少,效果要狠——只用10个命令,每个都有明确用途。

二、60秒10个命令(背下来就能救命)

时间
命令
快速看什么
如果超标,立刻怎么做
0-5秒
uptimeload值
系统繁忙度)
load>CPU核心数×2 → 系统太卡,先重启最耗资源的服务
5-10秒
dmesg -T  tail
有没有OOM(内存耗尽)或硬件报错
OOM → 清缓存+重启进程
10-15秒
vmstat 1 3r
(排队进程)、b(阻塞进程)
r>CPU核心×2 或 b>10 → 系统堵车了
15-20秒
iOStat -xzm 1 3%util
(磁盘忙率)、await(等待时间)
%util>90% 且 await>100ms → 磁盘瓶颈
20-25秒
free -mavailable
(可用内存)
available<10% → 清缓存或加内存
25-30秒
sar -n DEV 1 3  grep eth0网卡流量
流量>网卡上限70% → 限流
30-35秒
ss -sTIME_WAIT
连接数
TIME_WAIT太多 → 开重用
35-40秒
lsof  wC++ -l文件句柄数
句柄>30万 → 重启服务或加限制
40-45秒
ps --sort=-%cpu  head最耗CPU的进程
CPU>80% → 杀掉或限制
45-50秒
ps --sort=-%mem  head最耗内存的进程
内存>30% → 重启或限制
50-55秒
df -h磁盘使用率
使用率>90% → 删大文件
55-60秒
journalctl -k -p err -n 10内核报错
硬件错误 → 准备切换备用机

三、命令看不懂?看这里!


1. uptime

03:12:45 up 45 days,  load average: 48.2, 46.8, 32.0
  • load average就是系统有多忙,数字越高越卡。
  • 如果load>CPU核心数×2,系统就很卡了。

2. vmstat 1 3

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
48 2  0     200M   1.9G  6.3G    0    0   120  240  103k 142k 95  5  0  0  0
  • r(running):排队等CPU的进程数,>CPU核心×2就卡。
  • b(blocked):等磁盘/IO的进程数,>10就堵。

3. iOStat -xzm 1 3

Device    rMB/s wMB/s %util await
sda       0.2   450   98.5  210
  • %util:磁盘有多忙,>90%就是磁盘瓶颈。
  • await:等磁盘响应的时间,>100ms就慢。

4. free -m

total  used  free  shared  buff/cache  available
128G   125G  1.2G  0.5G    1.9G        600M
  • available:真正可用的内存,<10%就危险。

四、60秒后的3个急救法


问题
急救命令
说明
CPU爆满cpulimit -p <PID> -l 50
限制进程CPU为50%
磁盘IO爆满ionice -c3 -p <PID>
降低进程IO优先级
内存+swap爆满echo 3 > /proc/sys/vm/drop_caches
清缓存,释放内存

五、一键60秒巡检脚本

#!/bin/bash
# 60秒巡检脚本,结果保存在/tmp/pt60.log
{
  echo "=== $(date) ==="
  uptime
  dmesg -T | tail -n 5
  vmstat 1 3 | tail -n 1
  iostat -xzm 1 2 | tail -n +4 | awk 'NR%3==0'
  free -m
  ss -s
  sar -n DEV 1 1 | tail -n +3 | awk 'NR%2==0'
  ps -eo pid,%cpu,%mem,comm --sort=-%cpu | head -6
  ps -eo pid,%cpu,%mem,comm --sort=-%mem | head -6
  df -h | awk 'int($5)>90'
} | tee /tmp/pt60.log

用法

chmod +x pt60.sh
./pt60.sh

六、总结(背下来)

  • 60秒只做一件事:找出最卡的硬件资源,立刻止血。
  • 10个命令,个个有用,背下来,关灯也能敲。
  • 先救命,再治病,明天再慢慢找原因。

口诀

"load高先看CPU,CPU没事看磁盘;内存爆了清缓存,网络满了先限流;盘满删大文件,内核报错准备溜。"