首页 记录一次K8S Pod OOM的问题
文章
取消

记录一次K8S Pod OOM的问题

问题

在一次测试环境的容器部署中, 运维将Pod的内存限制设置为512M,同时 JVM 的 -Xmx 也为 512M。运行一段时间后 pod 就被OOM kill, 重复这种行为几次后, 我们就意识到了不对。运维调整内存为 1G, 然后就不在报错了,但是这并不是我们预期的行为。 而且在正常运行的情况下,JVM的堆内存也就在 200M 左右,而且应该也不会达到500M。

之前在虚拟机上,设置的 -Xmx 也是 512M。 这说明还有别的东西在吃内存。直到运维给我发了这张图,看到这个命令,我就去以前的机器上执行了相同的命令,占用内存也比设置的 -Xmx, 在700M左右。这说明我没重视的非堆内存,占用了200M+的内存空间。 这比我想象的要多很多。

然后就是用 Jcmd 命令查看了非堆内存占用的具体大小。发现是不到300M。

这样的话,我们的问题就解决了。Pod 的内存限制,需要减去大概 300M , 才能做为 -Xmx 的数值。

注:

本文由作者按照 CC BY 4.0 进行授权

Windows Terminal连接堡垒机

记录一次SpringBoot启动脚本命令行参数失效的问题