[已解决]linux系统中如何获取包含cache和buffers的可用内存
一个游戏服务器,跑在一台小内存的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());
试了一下,即使同步执行也只需要几毫秒,反正服务器小,还是可以接受的
1 回复