[已解决]linux系统中如何获取包含cache和buffers的可用内存
发布于 9 年前 作者 mercury233 3568 次浏览 最后一次编辑是 8 年前 来自 问答

一个游戏服务器,跑在一台小内存的VPS上,每个用户建立一个房间都会占用相对较大的内存 用户多了内存不够,需要限制用户数量,我的思路是在用户连接进来时检查内存使用情况 但直接用os.freemem()不能获取到cache和buffers部分,获得的结果比实际可用内存小很多 运行free命令读输出的话似乎有点慢,有没有其他的办法?


var spawnSync = require('child_process').spawnSync;

var get_memory_usage = function() {
    var actualFree, buffers, cached, free, line, lines, percentUsed, prc_free, total;
    prc_free = spawnSync("free", []);
    lines = prc_free.stdout.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;
    percentUsed = parseFloat(((1 - (actualFree / total)) * 100).toFixed(2));
    return percentUsed;
};
  
console.log(Date.now());
console.log(get_memory_usage());
console.log(Date.now());

试了一下,即使同步执行也只需要几毫秒,反正服务器小,还是可以接受的

回到顶部