如何找出Node.js进程的%CPU使用率?

时间:2011-10-14 21:36:13

标签: node.js cpu-usage

有没有办法用代码找出node.js进程的%cpu使用率?这样当node.js服务器运行并检测到CPU超过某个%时,它就会发出警报或控制台输出。

6 个答案:

答案 0 :(得分:27)

On * 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);

答案 1 :(得分:16)

尝试查看此代码:https://github.com/last/healthjs

  

获取远程系统CPU和接收CPU使用率警报的网络服务......

     

Health.js提供2种主要模式:“流模式”和“事件模式”。流模式允许客户端连接和接收流式CPU使用数据。事件模式使Health.js能够在CPU使用率达到特定阈值时通知远程服务器。两种模式都可以同时运行......

答案 2 :(得分:7)

请参阅node-usage以了解跟踪进程CPU和内存使用情况(不是系统)

答案 3 :(得分:6)

您现在可以使用os模块。

var os = require('os');
var loads = os.loadavg();

这为您提供最后60秒,5分钟和15分钟的平均负载。 虽然这并没有给你cpu的使用率。

答案 4 :(得分:3)

使用节点process.cpuUsage功能(在节点v6.1.0中引入)。 它显示了cpu在节点进程上花费的时间。从文档中获取的示例:

const previousUsage = process.cpuUsage();
// { user: 38579, system: 6986 }

// spin the CPU for 500 milliseconds
const now = Date.now();
while (Date.now() - now < 500);

// set 2 sec "non-busy" timeout
setTimeout(function() {
    console.log(process.cpuUsage(previousUsage);
    // { user: 514883, system: 11226 }    ~ 0,5 sec 
}, 2000);

答案 5 :(得分:0)

另一种选择是使用node-red-contrib-os