bho*_*bar 5 linux memory-management process kubernetes
我有一个 Kubernetes Pod,其中包含
我在这个 Pod 中运行了 2 个容器,一个是实际应用程序(重型 Java 应用程序),另一个是轻量级日志传送程序。
Pod 始终报告 1.9-2Gb 的内存使用情况。因此,部署会被扩展(设置自动扩展配置,如果内存消耗> 80%,则会扩展 Pod),自然会导致更多的 Pod 和更多的成本
黄线代表应用程序内存使用情况
然而,经过更深入的调查,我发现了这一点。
在exec
应用程序容器内运行该top
命令,它报告总共16431508 KiB
或大约 16Gb 的可用内存,这是机器上的可用内存。
应用程序容器内运行着 3 个进程,其中根进程(应用程序)占用5.9%的内存,大约为 0.92Gb。
日志传送程序仅占用 6Mb 内存。
现在,我不明白的是为什么我的 Pod 始终报告如此高的使用率指标。我错过了什么吗?由于意外的自动扩展,我们产生了巨大的成本,并且希望解决这个问题。
小智 1
在 Linux 中,未使用的内存被视为浪费内存,这就是为什么所有“空闲”RAM(即应用程序或内核本身未使用的内存)都积极用于缓存 IO 操作、文件系统元数据等,但如果需要,将提供给您的应用程序。
您可以在此处获取有关容器内存消耗的详细信息:
/sys/fs/cgroup/内存/docker/{id}/memory.stat
如果您想根据内存使用情况扩展集群,最好只计算应用程序大小,而不是容器内存使用情况。
归档时间: |
|
查看次数: |
9075 次 |
最近记录: |