簡體   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