二、7 大高频故障场景分步排查
每个场景给出「最快排查路径」「关键命令」「高频根因」「避坑提醒」,可直接对照执行。
场景 1:系统卡顿、SSH 登录慢、操作无响应
排查路径
1、先测网络:ping 丢包 / 延迟高 → 优先查链路;能 ping 通但 ssh 极卡 → 查系统负载 / IO
2、登录后执行 vmstat 1,10 秒判断瓶颈类型:
3、iostat -x 1 确认磁盘 %util 是否打满
4、dmesg -T 看有没有磁盘 IO 错误、内核 hung task 软死锁报错
高频根因
磁盘 IO 打满,大量进程等待读写
内存耗尽,系统疯狂 Swap 换页,整体卡顿
CPU 被占满,进程调度不过来
内核软死锁、磁盘硬件故障、文件系统损坏
避坑提醒
场景 2:服务启动失败 / 异常退出 / 频繁重启
排查路径(按优先级)
systemctl status 服务名 看退出码、最近一行报错
journalctl -u 服务名 -n 50 --no-pager 看服务启动日志,这是第一线索
校验配置语法:如 nginx -t、mysqld --verbose --help
检查端口占用:ss -lntp | grep 端口号
检查文件 / 目录权限、属主是否正确
检查依赖:依赖服务是否启动、依赖库文件是否存在
终极手段:strace -f 启动命令 跟踪系统调用,看具体卡在哪一步
高频根因
避坑提醒
场景 3:磁盘空间满 / IO 夯住 / 读写无响应
子场景 A:磁盘空间告警
排查路径:
df -hT 定位哪个分区满、是什么文件系统
du -sh * | sort -hr | head -10 定位大目录,逐层向下收敛
lsof | grep deleted 排查「删除未释放」文件(df 和 du 数值不一致时必用)
根分区满重点排查:/tmp、/var/log、/var/spool邮件队列、root 家目录
高频根因:日志未轮转、大文件误写入、临时文件未清理、邮件队列堆积。
子场景 B:IO 夯住、读写卡顿
排查路径:
iostat -x 1 看 %util(磁盘繁忙度)、await(IO 平均耗时)
iotop -oP 或 pidstat -d 1 定位高 IO 进程
lsof -p 进程PID 看进程在读写哪些文件
dmesg -T 看有没有 IO 错误、磁盘坏道报错
高频根因:日志疯狂刷盘、数据库大查询、随机读写过多、磁盘硬件故障。
避坑提醒
场景 4:内存 OOM、进程被 Kill、内存泄漏
排查路径
第一时间执行:dmesg -T | grep -i "out of memory",确认是不是 OOM killer 杀了进程
free -h 看可用内存、Swap 使用趋势
ps aux --sort=-%mem | head -10 找内存占用 Top 进程
pidstat -r 1 观察进程内存是否持续上涨(判断是否泄漏)
系统级分析:cat /proc/meminfo 看 slab、cache、buffer 分布
高频根因
业务程序内存泄漏,只申请不释放
JVM / 中间件堆内存配置过大,超出物理内存
缓存占用失控、连接数爆炸导致内存暴涨
系统参数配置不合理,OOM 触发阈值过低
避坑提醒
不要看到used高就判定内存不足,Linux 的buffer/cache是可回收的,看available字段才准确
Swap 持续上涨才是真的内存紧张,单纯 Swap used 高可能是历史换入的残留
OOM killer 不杀内存最大的进程,杀得分最高的进程,不要默认被杀的就是元凶
场景 5:网络不通 / 端口不可达 / 服务访问超时
排查路径(从近到远,从易到难)
本机自测:ss -lntp | grep 端口 确认服务是否在监听
本地连通:nc -zv 127.0.0.1 端口 排除服务本身问题
防火墙检查:firewall-cmd --list-ports / iptables -L 看端口是否放行
链路排查:mtr --tcp -P 端口 目标IP 看逐跳丢包
对端确认:目标机器安全组、防火墙是否拦截
终极定位:两端同时tcpdump抓包,看数据包在哪一跳丢失
高频根因
避坑提醒
场景 6:CPU 飙高、负载异常
排查路径
uptime 看负载趋势,vmstat 1 判断是 CPU 密集还是 IO 等待
top 按P排序,定位 CPU 占比最高的进程
ps -T -p 进程PID 定位具体高消耗线程
用户态 us 高:排查业务代码死循环、计算密集任务,配合堆栈工具分析
内核态 sy 高:strace看系统调用,排查频繁创建销毁线程、大量 IO
软中断 si 高:mpstat -P ALL 1 确认,配合sar -n DEV 1看网卡流量,排查大流量、攻击
高频根因
业务代码死循环、死锁
大量短连接导致上下文切换飙升
日志级别过低,疯狂刷盘消耗 CPU
网络流量过大,软中断占满 CPU
挖矿病毒、异常进程
避坑提醒
负载高≠CPU 满,IO 等待也会大幅拉高负载,先看wa占比
单线程程序打满单核,整体 CPU 占比不高但负载会上升,属于正常现象
不要上来就 kill 进程,先保留现场抓取堆栈信息
场景 7:系统意外宕机、自动重启
排查路径
last reboot 查看准确的重启时间点
uptime 确认本次运行时长,对齐故障时间
查历史日志:journalctl -b -1 看上一次启动的系统日志
dmesg 看本次启动内核日志,有没有硬件报错、panic 记录
重点排查:OOM、内核 panic、hung task、硬件错误
云服务器同步查平台监控:是否宿主机故障、是否触发告警自动重启
高频根因
避坑提醒