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

How do I get the instance memory in use for a Node-Express App running in CloudFoundry?

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

// 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);

有谁知道我如何使用 heap/rss 值或任何其他模块来获得我正在寻找的东西?

我可以想到两种可能实现此目的的方法。

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

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

如果您的应用程序代码需要此功能,您可以尝试使用 node-memwatch 包。它可以定期发出带有内存使用统计信息的事件。

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

不过要小心。内存分析可能很昂贵,因此请注意它的实现方式和实现方式。