Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js以百分比的形式获取实际内存使用率_Javascript_Linux_Node.js - Fatal编程技术网

Javascript Node.js以百分比的形式获取实际内存使用率

Javascript Node.js以百分比的形式获取实际内存使用率,javascript,linux,node.js,Javascript,Linux,Node.js,我曾使用“os”来计算一些系统统计数据,以便在应用程序中使用 然而,我注意到它实际上无法正确计算内存,因为它遗漏了正确计算单个可读百分比所需的缓存和缓冲区。如果没有它,大多数高性能服务器的内存几乎总是90%以上(根据我的测试) 我需要这样计算: (当前内存-缓存内存-缓冲内存)*100/总内存 这将使我获得系统所使用内存的更精确百分比。但是os模块和我见过的大多数其他node.js模块只能获得总内存和当前内存 在node.js中有什么方法可以做到这一点吗?我可以使用Linux,但我不知道系统的内

我曾使用“os”来计算一些系统统计数据,以便在应用程序中使用

然而,我注意到它实际上无法正确计算内存,因为它遗漏了正确计算单个可读百分比所需的缓存和缓冲区。如果没有它,大多数高性能服务器的内存几乎总是90%以上(根据我的测试)

我需要这样计算:

(当前内存-缓存内存-缓冲内存)*100/总内存

这将使我获得系统所使用内存的更精确百分比。但是os模块和我见过的大多数其他node.js模块只能获得总内存和当前内存


在node.js中有什么方法可以做到这一点吗?我可以使用Linux,但我不知道系统的内部和外部,也不知道在哪里可以找到自己的解决方案(通过读取文件来获取此信息,如top/htop)。

通过阅读文档,我担心您没有任何本机解决方案。但是,您始终可以直接从命令行调用“free”。我根据

var spawn=require('child_process')。spawn;
var prc=spawn('自由',[]);
prc.stdout.setEncoding('utf8');
prc.stdout.on('data',函数(data){
var str=data.toString()
变量行=str.split(/\n/g);
对于(变量i=0;i
基于,可用内存=可用+缓冲+缓存

下面的示例包括从节点os方法派生的用于比较的值(这些值是无用的)

多亏了莱奥雷斯


检查process.platform===“linux”

我认为此代码段中的
行[2][3]
返回
var spawn = require('child_process').spawn;
var prc = spawn('free',  []);

prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
  var str = data.toString()
  var lines = str.split(/\n/g);
  for(var i = 0; i < lines.length; i++) {
     lines[i] = lines[i].split(/\s+/);
  }
  console.log('your real memory usage is', lines[2][3]);
});

prc.on('close', function (code) {
    console.log('process exit code ' + code);
});
var spawn = require("child_process").spawn;
var prc = spawn("free", []);
var os = require("os");

prc.stdout.setEncoding("utf8");
prc.stdout.on("data", function (data) {
    var lines = data.toString().split(/\n/g),
        line = lines[1].split(/\s+/),
        total = parseInt(line[1], 10),
        free = parseInt(line[3], 10),
        buffers = parseInt(line[5], 10),
        cached = parseInt(line[6], 10),
        actualFree = free + buffers + cached,
        memory = {
            total: total,
            used: parseInt(line[2], 10),
            free: free,
            shared: parseInt(line[4], 10),
            buffers: buffers,
            cached: cached,
            actualFree: actualFree,
            percentUsed: parseFloat(((1 - (actualFree / total)) * 100).toFixed(2)),
            comparePercentUsed: ((1 - (os.freemem() / os.totalmem())) * 100).toFixed(2)
        };
    console.log("memory", memory);
});

prc.on("error", function (error) {
    console.log("[ERROR] Free memory process", error);
});