一个 Pod 频繁重启,kubectl describe 看到 Last State: OOMKilled,但容器内 top 内存看着没超 limit。排查记录。
关键点:
- OOMKilled 看的是容器 limit,不是节点内存。
- 内存尖峰(一次性加载大文件)可能瞬间超限被杀。
- Node.js 的 V8 heap 和 RSS 不一样,
--max-old-space-size要留 buffer 给非堆内存。 kubectl top pod看实时,kubectl get --previous看死前日志。
排查发现是某个接口一次性把整张表加载到内存,分页后稳了。
大家 OOM 都咋定位的?