故障排查实战手册:从场景到命令的运维指南
故障排查实战手册:从场景到命令的运维指南
在IT运维的日常中,故障如同潜藏在暗处的刺客,往往在业务高峰期不期而至。面对告警风暴和业务中断的压力,运维人员若仅凭经验“盲人摸象”,极易陷入排查泥潭。本手册旨在沉淀标准化的故障排查范式,按核心场景拆解排查思路与命令,助你在危机时刻稳扎稳打,一击必中。
场景一:网络连通性故障
网络是系统的命脉,网络不通则一切皆休。此类故障通常表现为应用报连接超时或拒绝连接。
排查思路:
遵循“自底向上”原则,依次排查物理层、链路层、网络层、传输层及应用层。先确认本机网络栈,再测网关,再测目标端,最后排查端口与防火墙。
核心命令:
- 检查本机网络栈:
```bash
ip addr show # 确认网卡状态、IP地址及子网掩码是否正确
ping 127.0.0.1 # 确认本机TCP/IP协议栈是否正常
```
- 测试链路连通性:
```bash
ping <目标IP> # 测试网络层是否可达
traceroute <目标IP> # 追踪路由跳数,定位断点在哪个网关/节点
```
- 排查端口与服务:
```bash
telnet <目标IP> <端口> # 传统测试端口连通性
nc -zv <目标IP> <端口> # 更强大的端口探测工具
```
- 排查DNS与防火墙:
```bash
nslookup <域名> # 确认DNS解析是否正确
iptables -L -n # 检查本机防火墙规则是否拦截
tcpdump -i eth0 host <目标IP> and port <端口> # 抓包分析,确认包是否发出及返回
```
场景二:系统性能瓶颈
系统变慢、请求堆积,此类故障往往呈现渐进式恶化。核心矛盾通常集中在CPU、内存、磁盘I/O三大资源争用上。
排查思路:
先通过全局监控工具定位瓶颈资源(是CPU跑满?还是内存耗尽?还是磁盘卡顿?),再细化到具体进程,最后深入进程内部排查线程级问题。
核心命令:
- 全局资源概览:
```bash
top / htop # 实时查看CPU、内存占用,关注load average和us/sy占比
vmstat 1 5 # 观察上下文切换(cs)、中断(in)及CPU运行队列(r)
```
- CPU排查(高CPU占用):
```bash
pidstat -u 1 # 按进程实时输出CPU使用率
top -H -p
perf top # 实时分析CPU在哪些函数上消耗时间
```
- 内存排查(OOM或高内存占用):
```bash
free -h # 查看整体内存使用,关注buff/cache及available
pidstat -r 1 # 按进程实时输出内存使用率
pmap -x
dmesg -T | grep -i oom # 检查内核是否触发过OOM Killer
```
- 磁盘I/O排查(高负载或卡顿):
```bash
iostat -dx 1 # 关注%util(使用率)和await(等待时间)
iotop # 查看哪个进程在疯狂读写磁盘
```
场景三:服务与进程异常
服务不可用、进程频繁崩溃重启是常见的应用层故障。此类问题需结合系统日志与应用日志联合分析。
排查思路:
确认进程状态 -> 追踪退出原因 -> 检查依赖环境 -> 分析应用日志。
核心命令:
- 确认进程状态:
```bash
systemctl status
ps -ef | grep <关键字> # 确认进程是否真的存活
```
- 深度分析崩溃原因:
```bash
journalctl -u
dmesg -T | tail -20 # 排查是否因内核错误(如段错误Segfault)杀死进程
strace -p
```
- 端口与文件句柄检查:
```bash
ss -tlnp | grep <端口> # 确认服务是否真正监听在预期端口上
lsof -p
```
场景四:磁盘与文件系统故障
磁盘满、Inode耗尽、文件系统只读,这类故障会导致应用无法写入数据,甚至引发系统崩溃。
排查思路:
先查空间使用率,再查Inode使用率,接着排查隐藏文件与挂载点覆盖问题,最后检查文件系统完整性。
核心命令:
- 空间与Inode检查:
```bash
df -h # 查看各分区空间使用率
df -i # 查看Inode使用率(小文件过多会导致Inode耗尽但空间有余)
```
- 定位大文件与隐藏目录:
```bash
du -h --max-depth=1 / | sort -hr # 逐层定位占空间最大的目录
lsof | grep deleted # 找出已被删除但仍被进程占用未释放空间的文件
```
- 挂载与文件系统检查:
```bash
mount | column -t # 检查挂载点状态,排查新数据写入被旧挂载点覆盖的“掩藏”问题
lsblk # 查看块设备映射关系
# 注意:fsck必须在卸载状态下执行
fsck -y /dev/sdX # 修复损坏的文件系统
```
总结:故障排查的“心法”
实战中,命令只是武器,真正的核心在于排查逻辑。面对突发故障,请牢记三步心法:
- 先止血,后治病:优先通过重启、限流、切流等手段恢复业务,再保留现场进行深度分析。
- 变更优先排查:超过60%的故障由近期变更引发,排查时务必先问:“最近有什么改动?”
- 善用二分法与对比法:在复杂链路中,通过掐断一半链路定位问题节点;通过与正常节点的配置对比,快速找出异常点。
将排查思路内化为本能,将命令烂熟于指尖,你就能在故障风暴中闲庭信步,成为系统最坚实的守夜人。