如何获取在CloudFoundry中运行的Node-Express应用程序使用的实例内存?

时间:2015-03-20 22:18:15

标签: node.js memory express cloudfoundry ibm-cloud

我目前正在构建一个带有node-express后端的应用程序,并将其部署到CloudFoundry。我知道我可以从VCAP_APPLICATION var中获取总实例内存,并且我可以使用' os'来获取操作系统内存。模块。似乎我可以使用' util'来获取应用程序内存。模块,但process.memoryUsage()中返回的对象的参数似乎都不是我想要的。我正在做以下事情以获得所有这些:

// Modules I've tried
var express = require('express'),
    app = express(),
    os = require("os"),
    util = require("util");

// Memory statistics I can get -> cannot get instance memory in use
var memLimit = JSON.parse(process.env.VCAP_APPLICATION)['limits']['mem'];
    totalMem = os.totalmem(),
    freeMem = os.freemem(),
    memUsed = util.inspect(process.memoryUsage()).split(" "),
    heapUsed = memUsed[6],
    heapTotal = memUsed[4].substr(0,memUsed[4].length-1);
    rss = memUsed[2].substr(0,memUsed[2].length-1);

有谁知道如何使用堆/ rss值或任何其他模块来获取我想要的内容?

1 个答案:

答案 0 :(得分:3)

我可以想到两种可能实现这一目标的方法。

如果您不一定需要在应用中获取此值,cf实用程序可以告诉您进程使用了​​多少内存。

运行cf app <app-name>将提供有关给定应用的统计信息,其中一个是内存使用情况。

如果您需要使用应用代码,则可以尝试使用node-memwatch包。它可以定期发出包含内存使用情况的事件。

您还可以查看代码node-memwatch用于查看他们如何计算值。

但是,要小心。内存分析可能很昂贵,因此请关注它的实现方式和内容。