【问题标题】:How do I get the instance memory in use for a Node-Express App running in CloudFoundry?如何获取在 CloudFoundry 中运行的 Node-Express 应用程序正在使用的实例内存?
【发布时间】:2015-03-20 22:18:14
【问题描述】:

我目前正在构建一个带有 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 值或任何其他模块来获得我正在寻找的东西?

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 谢谢马特! memwatch 中的堆差异方法正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2017-04-24
相关资源
最近更新 更多