6月2日 23:43

Docker 容器内存泄漏怎么排查?OOM 和内存增长定位实战

容器内存持续增长最终被 OOM Kill 是 Docker 最常见的问题之一。排查步骤:确认是不是真的泄漏 → 定位哪个容器 → 找到代码里的泄漏点。

确认问题

内存持续增长不回落大概率是泄漏。短暂增长后稳定不一定是泄漏——可能是 JVM/Node.js 堆还没触发 GC。

检查 OOM 事件

容器内定位

语言级分析

Node.js:用 v8.writeHeapSnapshot() 生成堆快照 Java:用 jmap -dump 生成堆 dump Python:用 tracemalloc 或 objgraph

用 Chrome DevTools 或 MAT 分析堆快照,找 Retained Size 最大的对象。

常见原因

  • 全局列表/缓存只加不删(最常见)
  • 事件监听器没有 removeEventListener
  • 数据库连接没有释放

临时缓解

只治标不治本,排查期间防止 OOM Kill。

标签:Docker