我有一个 Kubernetes Pod,它有以下配置:
该 Pod 持续报告使用 1.9-2Gb 的内存。由于这个原因,部署被扩展(设置了自动缩放配置,如果内存消耗 > 80%,则扩展 Pod),从而导致更多的 Pod 和更高的成本。 黄线代表应用程序内存使用情况
- 申请内存 1500Mb
- 内存限制 2048Mb
该 Pod 持续报告使用 1.9-2Gb 的内存。由于这个原因,部署被扩展(设置了自动缩放配置,如果内存消耗 > 80%,则扩展 Pod),从而导致更多的 Pod 和更高的成本。 黄线代表应用程序内存使用情况
然而,进行深入研究后,我发现了以下情况。
在应用程序容器内部执行 exec
命令后,运行 top
命令,报告了总共 16431508 KiB
或大约16Gb 的可用内存,这是机器上可用的内存。
有3个进程在应用程序容器内运行,其中根进程(应用程序)占用 5.9% 的内存,大约为0.92GB。
日志传输器仅使用了6MB 的内存。
现在,我不明白的是为什么我的 pod 始终报告如此高的使用度量标准。我是否遗漏了一些东西?由于意外的自动缩放而产生了重大成本,我们希望解决此问题。
-XX:+UseCGroupMemoryLimitForHeap
参数,以便JVM知道你的请求和参数限制? - Nikhil