📰 来源: 博客园
凌晨3点,手机震动,监控告警狂响,红灯闪烁。对于每一个运维人来说,这不仅是睡眠的终结,更是心理素质与技术功底的极限考验。面对线上故障,你是选择手忙脚乱地敲着零散的命令,祈祷运气站在自己这边,还是能够胸有成竹地按图索骥,像侦探一样抽丝剥茧?
故障排查绝不是靠运气,而是一场精密的外科手术,更是一套标准化的工程实践。今天,我们将日常零散的命令整合成一套逻辑严密的 “六步排查法” ,助你从焦头烂额的“救火队员”进化为冷静沉着的“系统侦探”,从容应对各种突发状况。
第一阶段:望闻问切——故障现象确认
在敲下第一个命令之前,先深呼吸,冷静30秒。盲目操作往往会导致现场被破坏,甚至引发次生灾害。此时,最重要的是建立对故障的宏观认知。
核心原则:先止损,后排查。先外后内,先整体后局部。
别急着登服务器,先在本地或跳板机进行非侵入式测试:
ping <目标IP>(检查物理链路是否通畅,是否有丢包,初步判断网络层连通性)。nc -zv <目标IP> <端口>(检查防火墙策略是否拦截,端口是否处于开放监听状态)。curl -v -o /dev/null -s -w "Time: %{time_total}s\n" <URL>(模拟真实HTTP请求,查看响应头、状态码、耗时分解,判断应用层是否健康)。第二阶段:系统体检——全局状态快速扫描
当你确认网络可达并登录服务器后,不要漫无目的地翻看日志,首先要做的是查看系统整体的“生命体征”,判断系统是否处于“濒死”状态。
uptime或top:重点关注load average的1分钟、5分钟、15分钟数值。top或htop。按P键按CPU占用率排序,快速识别是否有异常进程(如java、python、mysqld)占用过高资源。特别注意%wa(IO等待)指标,如果过高,说明CPU在空转等待磁盘,瓶颈在存储。free -h。重点看available(可用内存)列,而不是free。如果swap被大量使用,说明物理内存已枯竭,系统正在进行频繁的换入换出,性能会断崖式下跌。systemctl status <服务名>:确认核心业务服务是否处于active (running)状态,还是已经意外failed。dmesg -T | tail -n 50:查看内核环形缓冲区,排查是否有OOM Killer(内存溢出杀进程)记录,这通常是Java应用莫名退出的元凶。第三阶段:网络深潜——链路深度定位
如果系统资源(CPU、内存)看似正常,但业务依然不通或超时,那么问题大概率出在网络链路上。
mtr <目标IP>:结合了ping和traceroute的功能,比traceroute更强。它能实时动态显示数据包经过的每一跳的丢包率和延迟,帮助你精准定位是内网交换机问题,还是运营商骨干网问题。ip route show:检查本地路由表配置是否正确,是否存在多网卡环境下的路由冲突或默认网关丢失。ss -tunlp:替代老旧且缓慢的netstat,极速查看端口监听情况及对应进程。ss -s:快速查看TCP连接的统计摘要。如果TIME-WAIT状态连接过多,说明短连接频繁建立与断开,可能需要优化内核参数(如开启tcp_tw_reuse);如果CLOSE-WAIT过多,说明应用程序未正确关闭连接,存在代码层面的资源泄露。ss -tn state established:查看已建立的连接列表,确认客户端IP是否正常,排查是否有恶意IP进行连接攻击。当怀疑有异常流量、协议错误或数据包篡改时使用:
tcpdump -i eth0 -s 0 -w dump.pcap port <端口>:抓取指定端口的原始流量并保存为pcap文件。.pcap文件下载到本地,用Wireshark进行可视化分析,利用过滤器tcp.analysis.flags专门查看重传、乱序或重复确认的数据包,直观看到网络的“病灶”。第四阶段:性能瓶颈——谁在拖慢系统?
系统整体负载高,响应慢,通常是因为CPU、内存或磁盘IO中有一个环节成为了木桶效应的短板。
mpstat -P ALL 1:查看每一颗CPU核心的负载情况。如果某一核负载100%而其他核空闲,说明存在单线程死循环或单核瓶颈(常见于某些老版本JDK或单线程应用)。pidstat -u -p <PID> 1:针对特定进程ID,定位具体是哪个线程在疯狂消耗CPU。iostat -dx 1:关注%util(设备利用率)和await(平均I/O等待时间)。如果%util接近100%,说明磁盘已饱和,成为性能瓶颈;await过高则说明磁盘响应缓慢。pidstat -d -p <PID> 1:找出究竟是哪个“罪魁祸首”进程在疯狂进行读写操作,拖垮了磁盘。vmstat 1:关注si(swap in)和so(swap out)列。只要这两个数值不为0,就说明物理内存不足,系统正在频繁使用磁盘作为虚拟内存,这会导致系统响应时间从微秒级恶化到毫秒级,用户体验极差。🔗 原文链接: 点击阅读原文
文章评论