- Shipped
- 16 Agosti 2026, 01:40 UTC
- Author
- Kamo
- Commit
- 8e3eabc
The image starts the JVM with -XX:MaxRAMPercentage=70 -XX:+AlwaysPreTouch, so the heap alone may take 70% of the container limit and pre-touch keeps every committed page resident. Non-heap — uncapped metaspace, code cache, thread stacks, direct buffers — needs a further ~250-350Mi that the percentage cannot see. At a 1Gi limit that is 718Mi of heap plus ~240Mi, i.e. ~960Mi of 1024Mi, so the pod was never sized to reach the heap ceiling it was configured with. It did not need a leak or a traffic spike to die, only to be used: MediaService was OOMKilled every few hours and EmailService six times over. Every service on this template shared the arithmetic; these two just crossed the line first. Memory limit raised to 2Gi, requests raised to match the real floor. Already applied live with kubectl set resources, so this only carries the value forward for the next real deploy — hence [skip ci], nothing here needs rebuilding.