cf app命令使用CF内存

时间:2017-02-11 15:11:32

标签: cloudfoundry pivotal-cloud-foundry

我想了解cf app命令报告的内存状态。 例如如果我的应用程序返回

 state     since                    cpu     memory       disk           details

0运行2017-02-11 08:06:39 AM 18.2%2.2G的4G 200.3M的1G

这2.2G意味着什么?因为当我在newrelic中看到我的应用程序时,它显示为使用~1GB。我相信在应用程序启动时,实际分配还将取决于其他一些参数(xmx,memory calculatros?)。

(这是春季启动应用程序)

2 个答案:

答案 0 :(得分:1)

运行cf app <app-name>时,输出显示Linux内核为容器报告的内存和CPU使用情况。最新版本的CF使用Guardian&amp; runc,使用Warden的旧版本。

从概念上讲,您可以将其报告的内容视为容器内运行的所有进程的内存使用情况。这包括您的应用程序进程,以及平台放置的几个非常小的进程(一个是促进cf ssh的SSH守护进程)。如果您想了解有关在容器中运行的内容的更多信息,我建议您执行cf ssh,然后查看ps auxtop

对于您的特定应用,您看到的差异很可能是因为它是一个Java应用。您需要确保查看进程的完整内存使用情况,而不仅仅是堆使用情况。堆只是Java应用程序总内存使用量的一部分,其中还包括PermGen(1.7)或Metaspace(1.8),线程,本机代码,直接内存和JVM本身使用的其他内存。

答案 1 :(得分:0)

它说应用程序的一个实例正在运行。该应用程序被分配/分配了4GB的内存(当您运行cf app时)该应用程序消耗了2.2 GB的总内存。

如果New Relic报告接近1 GB的内存,这可能意味着还有其他东西占用了另外1.2 GB的内存。

我首先看一下你正在使用的buildpack。您使用的是标准的java buildpack还是您公司创建的自定义buildpack? buildpack是否添加任何其他代理?像AppDynamics(不是说这是罪魁祸首)或其他东西。找出答案,并确定这些附加组件消耗的内存量。

我建议您可以对正在运行的实例执行heapdump。你将不得不ssh到容器中。头转储可能是2.2 GB,分配给您的应用程序的磁盘只有1GB,这将造成问题。有解决方案,但这取决于您正在运行的PCF版本。

只是一个简单的问题,您是否有机会在您的应用中使用nashorn

希望这有帮助!