[英]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.