当前位置: 首页 > news >正文

一次生产故障完整复盘:Linux 排查全流程实录

文章目录

    • 引言
    • 一、故障全览:时间线与因果链
    • 二、逐阶段深入:每个决策背后的原理
      • 阶段一:CPU 飙升——先确认热点进程
      • 阶段二:内存增长——区分正常缓存与泄漏
      • 阶段三:OOM Kill——理解选择逻辑
      • 阶段四:磁盘写满——理解写入在哪里发生
      • 阶段五:SSH 失联——控制台是最后的安全网
      • 阶段六:数据抢救——先保现场,再救数据
    • 三、根因分析:为什么从一条慢查询蔓延到系统瘫痪
    • 四、改进清单:每一项对应根因链上的一个断点
    • 五、复盘工具链:按场景整理
    • 六、知识串联:这篇文章整合了前面哪些内容
    • 总结

引言

某台跑着 MySQL + Nginx 的 CentOS 7 服务器,凌晨 03:17 收到 Zabbix 告警——CPU 使用率瞬间破 90%。从登录服务器到服务完全恢复,一共用了 47 分钟。这 47 分钟里,CPU 飙升只是开场,内存泄漏是推手,OOM Kill 触发了连锁反应,磁盘写满导致远程连接彻底断开,最后靠 IPMI 控制台才挤进服务器救出数据。

前面十三篇文章拆开了讲 CPU、内存、IO、网络、systemd、安全加固的知识点。这一篇把它们串起来:每个决策都有时间窗口的压力,没有机会回头重来。


一、故障全览:时间线与因果链

先建立整体视图,理解这条链才能明白每一步为什么要那样走。

磁盘子系统OOM KillerMySQL值守工程师服务器系统Zabbix 监控磁盘子系统OOM KillerMySQL值守工程师服务器系统Zabbix 监控第一阶段 · CPU 飙升(03:17 - 03:21)确认是 Java 服务异常,MySQL CPU 占用正常第二阶段 · 内存泄漏(03:21 - 03:29)内存增长速率不均衡,不是正常的 Page Cache 抖动第三阶段 · OOM Kill 触发(03:29 - 03:34)Java 进程同样被 kill,/var/crash 目录下瞬间堆积大量 core dump第四阶段 · 磁盘写满(03:34 - 03:42)core dump 写入 /var/crash,磁盘空间瞬间归零第五阶段 · SSH 失联(03:42 - 03:50)切换到 IPMI/BMC 控制台直连第六阶段 · 数据抢救(03:50 - 04:04)MySQL 配置 lower_case_table_names=1,重启后表名大小写一致性得到保证03:17 CPU > 90% 告警SSH 登录服务器top -c 发现 java 进程 CPU 占用 780%java 进程 PID=15234,子进程数量偏多free -m,可用内存从 8GB 跌至 300MBfor x in $(seq 1 10)do ps aux --sort=-rss | head -5sleep 3done
http://www.jsqmd.com/news/647558/

相关文章:

  • Go 中使用 go-json-rest 时调用 Write 方法的正确方式
  • 微服务架构下的性能调优实战:从 2s 到 200ms 的优化之路
  • ZStack 环境下黑群晖硬盘识别问题:从Virtio到Sata的转换指南
  • 新手避坑指南:单相全控整流电路Simulink仿真时,阻感负载参数怎么设才不会报错?
  • QMC解码器:3分钟解锁QQ音乐加密文件的终极指南
  • DocuSeal:开源电子签名平台 - DocuSign免费替代方案
  • PHP源码能否在NAS设备上运行_NAS部署PHP源码可行性【教程】
  • 露营氛围神器:用ESP32+Max4466做个超大号音乐频谱灯(附Arduino源码)
  • 零基础玩转 OpenClaw:用「awesome-openclaw-usecases」把 AI 变成你的私人超能助理!
  • mysql为何建议放弃MyISAM_从InnoDB ACID特性分析
  • 商业应用(14)客户时间存储系统—东方仙盟练气期
  • Python 切片语法基础:[start:end:step] 全解
  • 基于51单片机的步进电机调速与状态显示系统(仿真+源码+设计详解)
  • 多模态大模型学习笔记(三十五)——OCR全景认知:从字符识别到多模态理解的百年演进
  • Redis怎样提取门店具体坐标_通过GEOPOS指令读取Geo内部经纬度信息
  • JAVA低空经济无人机飞手接单小程序源码代码片段
  • 文件操作基础:读写、路径、异常处理全总结
  • MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数
  • 从实验室到野外:用Ublox-F9P+ROS搭建移动机器人高精度定位数据采集系统(含小车实战经验)
  • FlipIt翻页时钟屏保:为Windows桌面打造复古时间艺术的完整指南
  • ESP32物联网开发实战:从硬件选型到云端连接的高效路径
  • 配置驱动弹窗:JSON配置弹窗内容/按钮,避免重复开发弹窗|配置驱动开发实战篇
  • 构建高质量问答对的自动化 Pipeline
  • AI 编程工程化:Plugin——AI 工具能力的产品化形态
  • LLM+VLM+Audio联合推理场景下,如何让负载均衡器“看懂”模态语义?——基于跨模态Token热度图的智能分发算法
  • 从理论到实践:ResNet50在图像分类任务中的部署与调优
  • 【技术解析】BAN双线性注意力网络:低秩池化与多模态残差的高效融合
  • OpenClaw vs Hermes Agent:哪个更适合你的需求?
  • 开源创富思维:独立开发者如何把爱好变成收入?
  • 航空制造业前沿技术:TITAN-AM 计划启动