故障排查实战手册:运维高手的“破局”指南

在IT运维的日常中,故障就像是不期而遇的暗雷,随时可能炸响。面对告警风暴和业务中断的压力,高手与新手最大的区别不在于是否背过命令,而在于是否拥有体系化的排查思路。本手册按常见故障场景分类,梳理从底层到应用的排查逻辑与核心命令,助你在危机时刻稳扎稳打,精准破局。


场景一:网络连通性故障

排查思路:网络故障排查遵循“自底向上”原则,从物理层->链路层->网络层->传输层->应用层逐层排查。切忌一上来就抓包,应先确认最基础的配置与状态。

核心命令

  1. 检查网卡状态与配置

```bash

ip a # 查看IP地址、网卡状态(UP/DOWN)、MAC地址

ethtool eth0 # 检查物理链路是否连通(Link detected: yes/no)

```

  1. 排查路由与网关

```bash

ip route # 查看路由表,确认默认网关是否存在

ping <网关IP> # 测试二层/三层连通性

traceroute <目标IP> # 定位丢包或路由中断的具体跳数

```

  1. 排查DNS解析

```bash

nslookup <域名> # 验证域名解析是否正常

dig <域名> # 更详细的DNS查询过程追踪

cat /etc/resolv.conf # 检查DNS服务器配置

```

  1. 排查端口与防火墙

```bash

telnet <端口> # 快速测试远端端口是否可达

ss -tulnp # 查看本机端口监听状态

iptables -L -n # 检查防火墙规则是否拦截

tcpdump -i eth0 port <端口> # 终极武器:抓包分析SYN/ACK/RST状态

```


场景二:系统性能骤降(CPU/内存/IO)

排查思路:性能问题通常表现为业务卡顿,需先通过全局监控定位瓶颈资源(CPU、内存、磁盘I/O),再细化到具体进程与线程。

核心命令

  1. 全局负载概览

```bash

uptime # 查看1/5/15分钟系统负载,判断是否持续高压

vmstat 1 5 # 查看CPU上下文切换(cs)、中断(in)、阻塞进程(b)及Swap使用

```

  1. CPU瓶颈排查

```bash

top # 按P键按CPU使用率排序,找出吃CPU的进程

pidstat -u 1 # 动态查看各进程CPU占用,区分用户态与内核态

```

  1. 内存瓶颈排查

```bash

free -h # 关注可用内存,重点看buffers/cache(系统缓存可释放)

top # 按M键按内存使用率排序

pidstat -r 1 # 查看进程内存缺页中断等

```

  1. 磁盘I/O瓶颈排查

```bash

iostat -x 1 # 核心!关注%util(使用率)和await(等待时间),超过80%且await高即为瓶颈

iotop # 类似top,按磁盘I/O使用率排序进程

lsof -p # 查看该进程正在读写哪些文件

```


场景三:服务启动失败或异常崩溃

排查思路:服务挂掉不可怕,可怕的是不看日志盲目重启。排查核心是“看状态、查日志、验配置、探依赖”。

核心命令

  1. 检查服务状态与日志

```bash

systemctl status <服务名> # 查看服务当前状态、Main PID及退出码

journalctl -u <服务名> --since "10 min ago" # 查看该服务近10分钟的系统日志

```

  1. 分析应用自身日志

```bash

tail -f /var/log/<服务名>/error.log # 实时追踪错误日志

grep -i "error\|exception\|fatal" /var/log/<服务名>.log # 过滤致命错误

```

  1. 检查端口冲突与依赖

```bash

ss -tulnp | grep <端口> # 确认端口是否被其他进程抢占

lsof -i :<端口> # 定位占用端口的进程PID

```

  1. 配置文件语法验证

```bash

nginx -t # Nginx配置语法检查

httpd -t # Apache配置语法检查

# 很多服务启动失败仅仅是配置文件少了一个分号或括号

```


场景四:磁盘空间与Inode耗尽

排查思路:磁盘满不一定只是文件太大,还可能是Inode(索引节点)耗尽,或者是已删除文件被进程持续占用导致空间未释放。这是运维极易踩坑的盲区。

核心命令

  1. 查看空间与Inode使用率

```bash

df -h # 查看各分区磁盘空间使用率

df -i # 查看各分区Inode使用率(小文件过多会导致Inode满而空间有剩余)

```

  1. 定位大文件与大目录

```bash

du -sh /* 2>/dev/null | sort -rh | head -10 # 从根目录开始,找出最大的前10个目录

find / -type f -size +1G # 全局搜索大于1G的文件

```

  1. 排查“隐形”占用(已删除但未释放)

```bash

lsof | grep deleted # 找出状态为deleted但进程仍持有的文件

# 解决办法:重启或kill掉对应的进程,空间才会真正释放

```

  1. 清理日志小技巧

```bash

# 切忌直接rm大日志文件,应使用清空方式,避免进程依然写入原句柄

> /var/log/huge.log # 重定向清空文件

```


总结

故障排查的本质是信息收集逻辑推理的过程。遇到故障时,牢记“先恢复后排查”(如重启、切换备用节点),保持冷静。善用上述命令组合,建立从宏观到微观、从底层到应用的排查路径,你也能在纷繁复杂的告警中,一击命中要害。