先看负载,再区分 CPU / 内存 / IO 瓶颈,用 top/ps 定位进程,iostat/vmstat 确认瓶颈,结合日志判断是业务问题、攻击还是资源不足。
uptime

当前时间 、系统运行了多久 、 负载 1 分钟、5分钟、15分钟。负载高不一定 CPU 高,可能是 IO 等待 / 锁等待。
这里数值应该小于cpu的核心数的0.7-0.8为正常、等于cpu的核心数则刚好跑满、大于cpu的核心数会开始拥堵。
load < 核心数:轻松
load ≈ 核心数:满负载,还能扛
load > 核心数:偏高,开始排队
load > 2× 核心数:严重拥堵,必卡

CPU 高
top 按 1 看多核
shift + P 按 CPU 排序
看是否死循环、爬虫、挖矿、压测
内存高
free -h
shift + M 按内存排序看是否内存泄漏、OOM
IO 高(% wa 高)
iostat -x 1
iotop
常见:MySQL 刷盘、大量日志写入、磁盘坏道
上下文切换 / 中断高
vmstat 1
df -h # 看哪个分区满
df -i # 看是否 inode 满
du -sh ./* | sort -rh
find / -type f -size +1G | sort -rh
lsof | grep deleted
for d in /*; do echo $d; find $d -type f | wc -l; done
# 清理大量小文件
find /var/spool/postfix/maildrop -type f -delete
ss -tulnp | grep 端口
netstat -tulnp | grep 端口
telnet IP 端口
nc -zv IP 端口
curl IP:端口
cannot allocate memoryfree -h
dmesg | grep -i oom
dmesg:查看内核日志
grep -i oom:过滤出包含 OOM 的信息(不区分大小写)
用途:查系统是否发生过「内存溢出被杀进程」