Подтвердить что ты не робот

Как узнать, как использовать% CPU для процесса Node.js?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

В системах * 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);

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

Используйте функцию узла 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%
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);

Ответ 6

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