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。