簡體   English   中英

監控和限制雲代工廠 Java 應用程序的內存使用情況

[英]Monitoring and throttling on memory usage on cloud foundry java application

我需要限制 CloudFoundry 上托管的應用程序的使用。

為此,我的 Java 代碼具有存儲以下內容的變量

long L1 = Runtime.getRuntime().freeMemory();
long L2 = Runtime.getRuntime().totalMemory();
long L3 = Runtime.getRuntime().maxMemory();

但是,當我在 cmd 上使用命令cf app並嘗試獲取該值時,它遠不及 L1、L2、L3 三個值中的任何一個。 那么如何在我的 Java 代碼中獲取cf app命令輸出值呢?

在撰寫本文時,JVM(java 8 和 9)不支持容器(這應該會在某個時候發生,也許是 11?)。 當您運行函數來查詢內存使用情況時,它將返回有關運行應用程序的整台機器或 VM 的信息。

在 Cloud Foundry 中,您可以通過查看MEMORY_LIMIT環境變量來獲取應用程序的內存限制。 我認為使用 MemoryMXBean(如此處所述)將是獲取當前使用情況的方法。 然后,您可以從MEMORY_LIMIT減去當前使用情況,並MEMORY_LIMIT出您與該限制的接近程度。

請注意,會有少量開銷,因為 Cloud Foundry 在您的容器中運行幾個小進程(主要是 pid-0 和 ssh)。 不過,開銷非常小,我認為上次查看時大約為 25M。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM