it-swarm.com.de

Wie kann man die CPU-Auslastung in% für den Prozess Node.js ermitteln?

gibt es eine Möglichkeit, die% CPU-Auslastung für einen node.js-Prozess mit dem Code herauszufinden? Wenn der node.js-Server ausgeführt wird und erkennt, dass die CPU über einem bestimmten Prozentsatz liegt, wird eine Warnung oder eine Konsolenausgabe ausgegeben.

20
murvinlai

Schauen Sie sich diesen Code an: https://github.com/last/healthjs

Netzwerkdienst zum Abrufen der CPU eines Remote-Systems und Empfangen von CPU-Nutzungswarnungen ...

Health.js bietet zwei Hauptmodi: "Streaming-Modus" und "Ereignismodus". Im Streaming-Modus kann ein Client eine Verbindung herstellen und Streaming-CPU-Nutzungsdaten empfangen. Im Ereignismodus kann Health.js einen Remote-Server benachrichtigen, wenn die CPU-Auslastung einen bestimmten Schwellenwert erreicht. Beide Modi können gleichzeitig ausgeführt werden ...

16
CrazyDart

Auf * nix-Systemen können Prozessstatistiken durch Lesen der virtuellen Datei/proc/[pid]/stat abgerufen werden.

So wird beispielsweise die CPU-Auslastung alle zehn Sekunden überprüft und bei mehr als 20% an die Konsole gedruckt. Es überprüft die Anzahl der CPU-Ticks, die vom Prozess verwendet werden, und vergleicht den Wert mit einer zweiten, eine Sekunde später durchgeführten Messung. Der Unterschied ist die Anzahl der Ticks, die der Prozess in dieser Sekunde verwendet. Auf POSIX-Systemen gibt es 10000 Ticks pro Sekunde (pro Prozessor). Wenn Sie also 10000 teilen, erhalten Sie einen Prozentsatz.

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);
27
Zack Bloom

siehe Knotennutzung zur Prozessverfolgung der CPU- und Speichernutzung (nicht des Systems)

7

Sie können das os-Modul jetzt verwenden. 

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

Dies gibt Ihnen den Lastdurchschnitt für die letzten 60 Sekunden, 5 Minuten und 15 Minuten. Dies gibt Ihnen jedoch nicht die CPU-Auslastung als%. 

6
Garrows

Verwenden Sie den Knoten process.cpuUsage function (eingeführt in Knoten v6.1.0). Zeigt die Zeit an, die die CPU für Ihren Knotenprozess aufgewendet hat. Beispiel aus Dokumenten:

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);
2
fider

Eine andere Option ist die Verwendung von node-red-contrib-os package