我看到有几个节点包允许您查找特定进程的用法,例如https://www.npmjs.com/package/usage
我试图获得整体服务器使用/统计(CPU和内存),而不仅仅是一个特定的进程或另一个.甚至可能是磁盘空间使用.
我目前无法找到这样的东西,这可能吗?
pis*_*tor 56
本机模块os可以为您提供一些内存和CPU使用情况统计信息.
var os = require('os');
console.log(os.cpus());
console.log(os.totalmem());
console.log(os.freemem())
Run Code Online (Sandbox Code Playgroud)
cpus()函数为您提供平均值,但您可以使用公式和间隔计算当前使用情况,如本答案中所述.
还有一个包为你做这个,称为os-utils.
取自github上的示例:
var os = require('os-utils');
os.cpuUsage(function(v){
console.log( 'CPU Usage (%): ' + v );
});
Run Code Online (Sandbox Code Playgroud)
有关磁盘的信息,您可以使用磁盘空间
Run Code Online (Sandbox Code Playgroud)var osu = require('node-os-utils') var cpu = osu.cpu cpu.usage() .then(info => { console.log(info) })
由于我发现没有代码可以解决这个问题,并且不想仅仅依靠其他包来处理某些代码行,因此我编写了一个函数来计算两个连续函数调用之间的平均 CPU 负载。我假设t_idle + t_user + t_sys = total cpu time结果与我的 Windows 任务管理器的结果有点相似,但是,使用情况对我来说似乎不太敏感(例如,音乐播放比 Windows 任务管理器增加更多的 CPU 负载)。如果我的假设有误,请纠正我。
const os = require('os');
// Initial value; wait at little amount of time before making a measurement.
let timesBefore = os.cpus().map(c => c.times);
// Call this function periodically e.g. using setInterval,
function getAverageUsage() {
let timesAfter = os.cpus().map(c => c.times);
let timeDeltas = timesAfter.map((t, i) => ({
user: t.user - timesBefore[i].user,
sys: t.sys - timesBefore[i].sys,
idle: t.idle - timesBefore[i].idle
}));
timesBefore = timesAfter;
return timeDeltas
.map(times => 1 - times.idle / (times.user + times.sys + times.idle))
.reduce((l1, l2) => l1 + l2) / timeDeltas.length;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41075 次 |
| 最近记录: |