草草聊事

线上问题实战录 · 系列目录

2026/06/19
6
0

线上问题实战录 · 系列目录

叙事框架:现象 → 排查过程 → 根因 → 修复 → 预防 总计 58 篇,已发布 15 篇,43 篇待完善


一、CPU 飙高类

二、OOM / 内存泄漏类

三、FullGC / GC 问题类

  • ⏳ G1 还是 ZGC?一个线上 RT 波动的 GC 选型改造实录
  • ⏳ CMS GC 频繁 promotion failed 排查
  • ⏳ 一次诡异的 Safepoint 机制导致应用无响应
  • ⏳ YoungGC 耗时异常:从 GC 日志到 OS 层缺页中断排查

四、接口慢 / 延迟飙高类

  • ⏳ 接口突然慢了 20 倍,从 JFR 火焰图到一行代码的修复
  • ⏳ p99 飙升但 avg 正常?长尾请求根因定位方法论
  • ⏳ 一次外部依赖超时引发的线程池饥饿级联故障

五、线程 / 线程池问题类

  • ⏳ 线程池队列积压了 10 万任务,不重启怎么诊断?
  • ⏳ 线程池满了?拒绝策略选型失误导致任务丢失
  • ⏳ Executors.newCachedThreadPool 创建了 10 万线程——无界线程池陷阱
  • ⏳ 核心线程数设错了:过大导致资源竞争,过小导致队列积压

六、死锁 / 锁问题类

  • ⏳ 死锁检测三板斧:jstack + 代码审查 + lock chain 分析
  • ⏳ ReentrantLock 与 synchronized 选型不当导致性能雪崩
  • ⏳ 读写锁 ReentrantReadWriteLock 锁降级导致死锁
  • ⏳ 数据库行锁升级表锁的生产事故排查
  • ⏳ 间隙锁导致的并发插入死锁
  • ⏳ 热点行更新引起的锁等待雪崩

七、网络连接类

  • ⏳ 客户端报连接超时、服务端说没收到——TCP 握手丢包分析
  • ⏳ TCP 连接异常断开:RST 包全链路定位
  • ⏳ 一次 keepalive 配置不当导致连接泄漏
  • ⏳ 容器网络不通?从 CNI 到 iptables 逐层排查

八、日志风暴类

  • ⏳ 日志打印太多打挂应用?一次日志风暴的根因定位
  • ⏳ 日志框架配置冲突导致磁盘写满
  • ⏳ 日志异步写入器瓶颈引发的服务线程阻塞

九、磁盘 / 存储类

  • ⏳ 磁盘写满了不光因为日志——Linux 存储排查全景
  • ⏳ 磁盘 IO 打满导致接口响应极慢分析
  • ⏳ 日志轮转失效导致磁盘爆满

十、配置 / 类加载类

  • ⏳ 配置中心的值和预期不一样?Arthas ognl 直接查内存
  • ⏳ 线上小版本升级总能引入诡异类冲突——类加载器视角排查
  • ⏳ @Value 配置注入失败:占位符未解析
  • ⏳ Spring Boot Auto-Configuration 加载顺序导致 Bean 覆盖

十一、压测类

  • ⏳ 双十一全链路压测,从 Perf 火焰图发现框架级 Bug
  • ⏳ 压测时 TPS 上不去,如何分层定位瓶颈?

十二、进程异常类

  • ⏳ Linux OOM Killer 杀了你的 Java 进程?日志里有线索
  • ⏳ 容器中 Java 进程被 killed 但 dmesg 什么都没有
  • ⏳ 应用突然无响应但进程还在——一次 JVM 长时间停顿排查

十三、混合 / 全链路类

  • ⏳ "一个请求的一生":从 DNS 到 DB 全路径排查一次接口超时
  • ⏳ 微服务调用链路超时:从网关到下游的全链路追查
  • ⏳ 线上徒手撕 Bug:没有 Arthas 的年代怎么在线 Debug

最后更新:2026-06