mur*_*lai 20 cpu-usage node.js
有没有办法找到node.js进程的%cpu使用情况与代码?这样当node.js服务器运行并检测到CPU超过某个%时,它就会发出警报或控制台输出.
Zac*_*oom 28
在*nix系统上,可以通过读取/ proc/[pid]/stat虚拟文件来获取进程统计信息.
例如,这将每十秒检查CPU使用率,如果超过20%则打印到控制台.它的工作原理是检查过程使用的cpu滴答数,并将该值与一秒钟后的第二次测量值进行比较.差异是该过程在该秒期间使用的滴答数.在POSIX系统上,每秒有10000个刻度(每个处理器),因此除以10000得到一个百分比.
var fs = require('fs');
var getUsage = function(cb){
fs.readFile("/proc/" + process.pid + "/stat", function(err, data){
var elems = data.toString().split(' ');
var utime = parseInt(elems[13]);
var stime = parseInt(elems[14]);
cb(utime + stime);
});
}
setInterval(function(){
getUsage(function(startTime){
setTimeout(function(){
getUsage(function(endTime){
var delta = endTime - startTime;
var percentage = 100 * (delta / 10000);
if (percentage > 20){
console.log("CPU Usage Over 20%!");
}
});
}, 1000);
});
}, 10000);
Run Code Online (Sandbox Code Playgroud)
Cra*_*art 17
试着看看这段代码:https://github.com/last/healthjs
获取远程系统CPU和接收CPU使用率警报的网络服务......
Health.js提供2种主要模式:"流模式"和"事件模式".流模式允许客户端连接和接收流式CPU使用数据.事件模式使Health.js能够在CPU使用率达到特定阈值时通知远程服务器.两种模式都可以同时运行......
使用node process.cpuUsage函数(在node v6.1.0中引入)。它显示了 cpu 在节点进程上花费的时间。取自文档的示例:
const previousUsage = process.cpuUsage();
// { user: 38579, system: 6986 }
// spin the CPU for 500 milliseconds
const startDate = Date.now();
while (Date.now() - startDate < 500);
// At this moment you can expect result 100%
// Time is *1000 because cpuUsage is in us (microseconds)
const usage = process.cpuUsage(previousUsage);
const result = 100 * (usage.user + usage.system) / ((Date.now() - startDate) * 1000)
console.log(result);
// set 2 sec "non-busy" timeout
setTimeout(function() {
console.log(process.cpuUsage(previousUsage);
// { user: 514883, system: 11226 } ~ 0,5 sec
// here you can expect result about 20% (0.5s busy of 2.5s total runtime, relative to previousUsage that is first value taken about 2.5s ago)
}, 2000);
Run Code Online (Sandbox Code Playgroud)
您现在可以使用os模块.
var os = require('os');
var loads = os.loadavg();
Run Code Online (Sandbox Code Playgroud)
这为您提供了最后60秒,5分钟和15分钟的平均负载.虽然这并没有给你cpu的使用率.
归档时间: |
|
查看次数: |
26604 次 |
最近记录: |