繁体   English   中英

Kubernetes Pod 报告的内存使用量比实际进程消耗量多

[英]Kubernetes Pod reporting more memory usage than actual process consumption

我有一个 Kubernetes Pod

  • 请求的内存为 1500Mb
  • 2048Mb 的内存限制

我在这个 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与在容器内运行topfree的差异的更多信息: 检查 kubernetes pod CPU 和内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM