繁体   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