[英]Kubernetes Pod reporting more memory usage than actual process consumption
我有一个 Kubernetes Pod
我在这个 pod 中运行了 2 个容器,一个是实际应用程序(重型 Java 应用程序)和一个轻量级日志传送器。
pod 始终报告 1.9-2Gb 的内存使用情况。 因此,部署是扩展的(设置了自动扩展配置,如果内存消耗 > 80% 则扩展 Pod),自然会导致更多的 Pod 和更多的成本
黄线代表应用程序内存使用情况
然而,在更深入的调查中,这就是我发现的。
在应用程序容器内exec
,我运行了top
命令,它报告总共有16431508 KiB
或大约 16Gb 的可用内存,这是机器上可用的内存。
应用程序容器内运行着3个进程,其中根进程(应用程序)占用内存的5.9% ,大致为0.92Gb。
日志传送器只需要 6Mb 的内存。
现在,我不明白为什么我的 pod 总是报告如此高的使用指标。 我错过了什么吗? 由于意外的自动缩放,我们产生了大量成本,并希望解决此问题。
在 Linux 中,未使用的内存被视为浪费的内存,这就是为什么所有“空闲”RAM(即应用程序或内核本身未使用的内存)积极用于缓存 IO 操作、文件系统元数据等,但会在需要时提供给您的应用程序。
您可以在此处获取有关容器内存消耗的详细信息:
/sys/fs/cgroup/memory/docker/{id}/memory.stat
如果您想根据内存使用情况扩展集群,最好只计算应用程序大小,而不是容器内存使用情况。
如果有人在这里结束,请参阅此问题以了解有关使用kubectl top
与在容器内运行top
或free
的差异的更多信息: 检查 kubernetes pod CPU 和内存
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.