web-dev-qa-db-fra.com

Comment connaître le pourcentage d'utilisation du processeur pour le processus Node.js?

existe-t-il un moyen de connaître l'utilisation de% cpu pour un processus node.js avec le code? de sorte que lorsque le serveur node.js est en cours d'exécution et détecte que le processeur dépasse un certain pourcentage, il place une alerte ou une sortie de la console.

20
murvinlai

Essayez de regarder ce code: https://github.com/last/healthjs

Service réseau pour obtenir le processeur d'un système distant et recevoir des alertes d'utilisation du processeur ...

Health.js sert 2 modes principaux: "mode de diffusion" et "mode d'événement". Le mode de diffusion en continu permet à un client de se connecter et de recevoir des données d'utilisation du processeur en continu. Le mode événement permet à Health.js d'avertir un serveur distant lorsque l'utilisation du processeur atteint un certain seuil. Les deux modes peuvent être exécutés simultanément ...

16
CrazyDart

Les systèmes * nix peuvent obtenir des statistiques sur les processus en lisant le fichier virtuel/proc/[pid]/stat.

Par exemple, cela vérifiera l'utilisation du processeur toutes les dix secondes et imprimera sur la console s'il dépasse 20%. Cela fonctionne en vérifiant le nombre de ticks du processeur utilisés par le processus et en comparant la valeur à une seconde mesure effectuée une seconde plus tard. La différence est le nombre de ticks utilisés par le processus pendant cette seconde. Sur les systèmes POSIX, il y a 10000 ticks par seconde (par processeur), diviser par 10000 donne donc un pourcentage.

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

voir node-usage pour le suivi du processus Utilisation de la CPU et de la mémoire (pas le système)

7

Vous pouvez utiliser le module os maintenant. 

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

Cela vous donne la moyenne de charge pour les 60 dernières secondes, 5 minutes et 15 minutes. Cela ne vous donne pas l’utilisation du processeur en% bien. 

6
Garrows

Utilisez node process.cpuUsage function (introduit dans le nœud v6.1.0). Il indique le temps passé par le processeur à votre processus de nœud. Exemple tiré de docs:

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

Une autre option consiste à utiliser node-red-contrib-os package

0