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

有没有一种方法来找出一个node.js过程与代码%CPU的使用情况? 这样当node.js服务器运行并且检测到CPU超过了一定的百分比时,就会发出警报或控制台输出。

试着看这个代码: https : //github.com/last/healthjs

获取远程系统的CPU和接收CPU使用情况警报的networking服务…

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

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

你现在可以使用os模块。

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

这给你最近60秒,5分15分的平均负载。 这不会给你的CPU使用率,但%。

请参阅用于跟踪进程CPU和内存使用情况的节点使用情况(不是系统)

使用节点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); 

另一种select是使用node-red-contrib-os软件包