故障排查实战手册:运维高频场景与速查指南
故障排查实战手册:运维高频场景与速查指南
在IT运维的日常中,故障如同潜伏的暗雷,随时可能引爆。面对告警风暴和业务中断的压力,盲目试错只会拉长MTTR(平均恢复时间)。优秀的运维工程师依赖的是结构化的排查逻辑:从底层到高层、从网络到系统、从全局到进程。
本手册梳理了四大高频故障场景,提炼出标准化的排查思路与核心命令,助你在火线中快速定位,一击必中。
场景一:网络连通性故障
排查思路:
网络故障遵循“自底向上”原则。先查本地协议栈,再查链路层,接着查路由网关,最后查对端端口及防火墙拦截。
核心命令:
- 检查本地协议栈与接口
```bash
ping 127.0.0.1 # 检查TCP/IP协议栈是否正常
ip addr show / ifconfig # 检查网卡状态、IP地址及MAC信息
ethtool eth0 # 检查物理链路是否Link up,排除断网/网线松动
```
- 排查路由与网关
```bash
ping <目标IP> # 区分是内网不通还是外网不通
traceroute <目标IP> # 追踪路由跳数,定位丢包或断网的具体网络节点
ip route show # 检查路由表,确认默认网关是否配置正确
```
- 排查端口与防火墙
```bash
telnet
nc -zv
iptables -L -n # 检查本机防火墙规则是否阻断了流量
tcpdump -i eth0 port
```
场景二:系统性能骤降(CPU/内存飙升)
排查思路:
性能骤降需先定资源瓶颈(CPU/内存/IO),再定进程,最后定代码行。切忌一看到负载高就重启。
核心命令:
- 全局性能概览
```bash
top / htop # 观察整体负载,关注 %us(用户态), %sy(内核态), %wa(IO等待)
uptime # 快速查看1分钟、5分钟、15分钟系统负载均值
vmstat 1 5 # 动态观察上下文切换、中断及内存换入换出
```
- CPU飙高定位
```bash
top -> shift + H # 显示线程级别资源占用,找出最耗CPU的线程TID
perf top # 实时分析CPU占用函数热点(类似代码级火焰图)
# 将TID转为十六进制,配合jstack/pstack排查死循环或死锁
```
- 内存溢出/泄漏定位
```bash
free -h # 查看可用内存,关注 buffer/cache 占用(系统可回收)
ps aux --sort=-%mem | head -10 # 按内存排序抓取Top进程
pmap -x
smem -t -k # 按真实使用的内存(USS/PSS)排序,比RES更准确
```
场景三:磁盘I/O与空间耗尽
排查思路:
磁盘问题分两类:空间满(No space left on device)和I/O阻塞(卡顿/超时)。注意隐藏的“已删除但未释放”文件。
核心命令:
- 磁盘空间排查
```bash
df -h # 查看各分区整体使用率
du -sh /* | sort -rh | head -10 # 从根目录逐级向下找大文件
df -i # 检查Inode使用率(小文件过多导致Inode耗尽,空间剩余但无法建文件)
```
- 幽灵文件排查(空间未释放)
```bash
lsof | grep deleted # 找出被删除但进程仍占用的文件。重启对应进程即可释放空间
```
- I/O瓶颈排查
```bash
iostat -x 1 5 # 关注 %util(设备繁忙度) 和 await(IO等待时间)
iotop # 类似top,实时查看哪个进程在疯狂读写磁盘
pidstat -d 1 # 按进程展示I/O读写速率,适合脚本化抓取
```
场景四:服务与进程异常
排查思路:
服务不可用需先确认进程生死,再查系统日志,最后查应用自身日志及资源限制(如fd句柄数)。
核心命令:
- 进程状态与端口监听
```bash
systemctl status
ps -ef | grep
ss -tunlp # 确认进程是否成功监听在指定端口上
```
- 日志追踪
```bash
journalctl -u
tail -f /var/log/xxx.log # 实时查看应用日志,配合grep过滤Error/Exception
dmesg -T # 查看内核级日志(如OOM Killer强杀进程记录)
```
- 资源限制与句柄
```bash
ulimit -a # 查看当前用户资源限制(如open files最大句柄数)
lsof -p
cat /proc/
```
总结
故障排查不仅是技术的比拼,更是心理素质与逻辑思维的考验。在火线排查时,请牢记三大铁律:
- 先保留现场:重启前,务必抓取内存Dump、核心日志与Top快照,避免破坏第一手证据。
- 变更需谨慎:排查过程中切忌无目的的修改配置,每一次操作都应可回滚。
- 善用二分法:面对复杂调用链,通过掐断一半链路的方式,快速缩小故障域。
将这套手册内化为肌肉记忆,你将在故障面前从“手忙脚乱”走向“步步为营”。