Report #103426
[bug\_fix] OOMKilled \(exit code 137\): container exceeded its memory limit and was killed by the OOM killer
Raise the container's \`resources.limits.memory\` \(and \`resources.requests.memory\` if needed\) to a value that accommodates the working set, or reduce the application's memory usage. Use \`kubectl top pod\` and the metric-server history to pick a realistic limit. If the container is Java/Node/Python, tune runtime flags \(e.g. JVM heap, Node \`--max-old-space-size\`\) so the process does not try to allocate more than the cgroup limit.
Journey Context:
A pod restarts periodically with \`OOMKilled\` in \`kubectl describe pod\` and exit code 137 \(128 \+ SIGKILL 9\). The container ran for a while, then the kernel OOM killer terminated it because cumulative allocations crossed the cgroup \`memory.limit\_in\_bytes\`. Many teams first suspect a memory leak, but often the limit is simply set below the application's steady-state usage. Confirm with \`kubectl top pod \` and the memory graph from metrics-server or your monitoring stack. If usage flat-lines at the limit before the kill, raise the limit. If usage grows without bound, profile the app. For managed-language runtimes, also check that runtime max-heap/max-old-space is set lower than the container memory limit; otherwise the runtime thinks it has more RAM than the cgroup allows and the kernel kills it instead of the runtime's GC. After adjusting limits or tuning the runtime, the pod stops being OOMKilled.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-11T04:23:06.091121+00:00— report_created — created