Report #102405
[bug\_fix] OOMKilled
Increase \`spec.containers\[\*\].resources.limits.memory\` to a value at least as large as the application's peak working set, or reduce the application's memory usage. Ensure \`requests.memory\` is also raised if it is the effective limit for scheduling/QoS, and verify with \`kubectl top pod\` and heap profiles. Do not rely only on node-level free memory; the kernel OOM killer acts on the container cgroup limit.
Journey Context:
A Java service was being OOMKilled during nightly batch imports. \`kubectl describe pod\` showed 'Reason: OOMKilled' and 'Exit Code: 137', but the container logs had no stack trace because the Linux OOM killer terminated the process. Initial suspicion was a memory leak, but \`kubectl top pod\` showed memory climbing linearly to exactly 512 MiB and then the pod died — matching the deployment's memory limit. The JVM was starting with \`-Xmx1g\` defaults from a base Docker image, but the pod limit was only 512 MiB. The fix was two-part: raise the pod memory limit to 2 GiB to match real usage, and explicitly set \`-XX:MaxRAMPercentage=75.0\` so the JVM respected the cgroup limit instead of the host RAM. After the change the batch job completed without restarts.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:49:03.259286+00:00— report_created — created