2

我目前正在构建一个带有 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);

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

4

1 回答 1

3

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

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

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

如果您需要从应用程序代码中获取此信息,您可以尝试使用该node-memwatch软件包。它可以定期发出带有有关内存使用情况的统计信息的事件。

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

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

于 2015-03-22T01:44:38.510 回答