魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
  1. 首页
  2. AI技术
  3. 正文

深夜告警炸裂?这份Linux故障排查“作战地图”请收好

2026年3月29日 32点热度 0人点赞 0条评论

📰 来源: 博客园


凌晨3点,手机震动,监控告警狂响,红灯闪烁。对于每一个运维人来说,这不仅是睡眠的终结,更是心理素质与技术功底的极限考验。面对线上故障,你是选择手忙脚乱地敲着零散的命令,祈祷运气站在自己这边,还是能够胸有成竹地按图索骥,像侦探一样抽丝剥茧?

故障排查绝不是靠运气,而是一场精密的外科手术,更是一套标准化的工程实践。今天,我们将日常零散的命令整合成一套逻辑严密的 “六步排查法” ,助你从焦头烂额的“救火队员”进化为冷静沉着的“系统侦探”,从容应对各种突发状况。

第一阶段:望闻问切——故障现象确认

在敲下第一个命令之前,先深呼吸,冷静30秒。盲目操作往往会导致现场被破坏,甚至引发次生灾害。此时,最重要的是建立对故障的宏观认知。

核心原则:先止损,后排查。先外后内,先整体后局部。

  • 信息收集(多维度交叉验证)
  • 用户侧反馈:是全员不可用,还是特定区域或局部用户访问慢?是前端白屏,还是接口返回502/504错误?这些细节能帮你快速判断故障影响范围。
  • 监控侧大盘:立刻查看Grafana或Zabbix等监控大盘,确认流量是否突增、CPU是否打满、磁盘空间是否写满、错误率曲线是否有异常陡增。监控数据是故障的时间轴和证据链。
  • 基础连通性验证(黄金三板斧)
    别急着登服务器,先在本地或跳板机进行非侵入式测试:
  • Ping:ping <目标IP>(检查物理链路是否通畅,是否有丢包,初步判断网络层连通性)。
  • Telnet/Nc:nc -zv <目标IP> <端口>(检查防火墙策略是否拦截,端口是否处于开放监听状态)。
  • Curl:curl -v -o /dev/null -s -w "Time: %{time_total}s\n" <URL>(模拟真实HTTP请求,查看响应头、状态码、耗时分解,判断应用层是否健康)。
  • 第二阶段:系统体检——全局状态快速扫描

    当你确认网络可达并登录服务器后,不要漫无目的地翻看日志,首先要做的是查看系统整体的“生命体征”,判断系统是否处于“濒死”状态。

  • 系统负载(Load Average)
  • uptime或top:重点关注load average的1分钟、5分钟、15分钟数值。
  • 判断标准:如果1分钟负载数值远高于服务器CPU核数(例如4核机器负载达到20),说明系统已严重过载,任务正在队列中积压,响应必然变慢。
  • 资源水位(CPU、内存、IO)
  • CPU: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中有一个环节成为了木桶效应的短板。

  • CPU热点分析(精细化定位)
  • mpstat -P ALL 1:查看每一颗CPU核心的负载情况。如果某一核负载100%而其他核空闲,说明存在单线程死循环或单核瓶颈(常见于某些老版本JDK或单线程应用)。
  • pidstat -u -p <PID> 1:针对特定进程ID,定位具体是哪个线程在疯狂消耗CPU。
  • 磁盘IO分析(读写瓶颈)
  • iostat -dx 1:关注%util(设备利用率)和await(平均I/O等待时间)。如果%util接近100%,说明磁盘已饱和,成为性能瓶颈;await过高则说明磁盘响应缓慢。
  • pidstat -d -p <PID> 1:找出究竟是哪个“罪魁祸首”进程在疯狂进行读写操作,拖垮了磁盘。
  • 内存与交换分区(虚拟内存风暴)
  • vmstat 1:关注si(swap in)和so(swap out)列。只要这两个数值不为0,就说明物理内存不足,系统正在频繁使用磁盘作为虚拟内存,这会导致系统响应时间从微秒级恶化到毫秒级,用户体验极差。

  • 🔗 原文链接: 点击阅读原文

    标签: AI 人工智能 技术博客
    最后更新:2026年3月29日

    daozi

    这个人很懒,什么都没留下

    点赞
    < 上一篇

    文章评论

    razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复
    搜索
    联系方式

    QQ群:179730949
    QQ群:114559024
    欢迎您加入Android大家庭
    本人QQ:136049925

    赐我一丝安慰
    给我一点鼓励

    COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    豫ICP备15000477号