首页/云/云与容器速查/容器 OOMKilled 排查
本包目录(340 条)

容器 OOMKilled 排查

容器被 cgroup 内存上限杀死:docker inspect 的 State.OOMKilled=true、退出码 137。要区分『容器限制太小』还是『应用内存真的涨了』,再决定调限还是修代码。

云与容器速查云更新于 2026-10-12
确认docker inspect -f '{{.State.OOMKilled}}' → true
限制值HostConfig.Memory 看生效限制;docker stats 看实时用量
两类原因限制低于需求(配置问题)/ 内存泄漏或缓存膨胀(应用问题)
辅助信息dmesg | grep -i oom 看内核 OOM 记录(宿主级)
处置短期调大 limit;长期修内存增长并配监控告警

排查命令

排查命令
docker inspect myapp -f 'OOM={{.State.OOMKilled}} limit={{.HostConfig.Memory}}'
docker stats --no-stream myapp
dmesg -T | grep -i "oom\|killed process" | tail -10
调大 limit 前先看宿主余量:容器限制调大只是把风险挪给宿主,宿主 OOM 会杀更关键的东西。

易错点

  • 只看容器不看宿主:宿主内存紧张时容器同样被杀(且原因不在容器)
  • Java 堆外内存不受 -Xmx 管控:堆外膨胀照样 OOMKilled

数据来源与参考

  • Docker Docs:Resource constraints
  • Linux cgroup v2 文档(memory)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌