Report #1221
[bug\_fix] OOMKilled: container exceeded its memory limit and was killed by the kernel
Raise the container's \`resources.limits.memory\` and optionally \`resources.requests.memory\` to match realistic peak usage, then redeploy. Do not rely only on raising limits without also profiling actual heap usage; use \`kubectl top pod\` or a metrics tool to find the real peak. If memory spikes are caused by a memory leak, fix the leak rather than just raising limits.
Journey Context:
A Node.js API pod kept restarting every few hours. \`kubectl get pods\` showed STATUS \`OOMKilled\` and \`kubectl describe pod\` listed \`Reason: OOMKilled\` with \`Exit Code: 137\`. The deployment had \`limits.memory: 256Mi\`, which was fine during testing but the production dataset caused JSON parsing of large payloads to spike above 256Mi. I ran \`kubectl top pod\` and saw memory climb right before each kill. I temporarily raised the limit to 1Gi to stop the bleeding, then used the Node.js \`--heapsnapshot-near-heap-limit\` flag to capture a heap snapshot and found a streaming parser that was buffering the entire request body. After switching to a streaming parser I settled on a 512Mi limit, which matched the actual 95th-percentile usage and eliminated restarts.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T19:52:25.050460+00:00— report_created — created