Как узнать% загрузки ЦП для процесса Node.js? - PullRequest
20 голосов
/ 15 октября 2011

есть ли способ узнать использование% cpu для процесса node.js с помощью кода? так что когда сервер node.js работает и обнаруживает, что загрузка процессора превышает определенный%, он выдаст предупреждение или вывод на консоль.

Ответы [ 6 ]

27 голосов
/ 15 октября 2011

В * системах nix можно получить статистику процесса, прочитав виртуальный файл / proc / [pid] / stat.

Например, это будет проверять загрузку процессора каждые десять секунд и выводить на консоль, если она превышает 20%. Он работает путем проверки количества тактов процессора, используемых процессом, и сравнения значения со вторым измерением, выполненным через одну секунду. Разница заключается в количестве тиков, использованных процессом в течение этой секунды. В системах 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);
17 голосов
/ 15 октября 2011

Попробуйте посмотреть этот код: https://github.com/last/healthjs

Сетевой сервис для получения ЦП удаленной системы и получения предупреждений об использовании ЦП ...

Health.js обслуживает 2 основных режима: «режим потоковой передачи» и «режим событий». Потоковый режим позволяет клиенту подключаться и получать потоковые данные об использовании процессора. Режим событий позволяет Health.js уведомлять удаленный сервер, когда загрузка ЦП достигает определенного порогового значения. Оба режима могут быть запущены одновременно ...

7 голосов
/ 03 марта 2013

см. использование узла для отслеживания процесса ЦП и использования памяти (не системы)

7 голосов
/ 03 июля 2012

Теперь вы можете использовать модуль os.

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

Это дает вам среднее значение нагрузки за последние 60 секунд, 5 минут и 15 минут. Это не дает вам использование процессора как%, хотя.

4 голосов
/ 20 июня 2017

Использовать функцию узла process.cpuUsage (представлена ​​в узле v6.1.0). Он показывает время, которое процессор потратил на процесс вашего узла. Пример взят из документации:

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);
0 голосов
/ 09 октября 2016

Другой вариант - использовать node-red-contrib-os package

...