Arhn - архитектура программирования

Кластер Node.js — обнаружить зависание рабочего?

Я использую node.js с кластером, обычно с двумя процессорами, которые преобразуются в один главный и два рабочих. У меня есть скрытая проблема, когда иногда (очень редко) один из рабочих по какой-то причине «зависает», а другой несет всю нагрузку. Я не уверен в причине и все еще расследую (нет утечки памяти, нет переполнения стека, нет исключений).

Глядя на процессы, использующие команду top bash в Linux, я ясно вижу, что один из процессов узла устойчиво работает при 100% загрузке процессора.

Что я хочу спросить у вас сегодня, ребята, знаете ли вы способ обнаружить эту ситуацию (когда один рабочий работает на 100%), чтобы я мог его убить.


Ответы:


1

Ознакомьтесь с пакетом usage. Что-то вроде этого должно работать. Я пропустил настройку кластера и рабочего процесса.

var usage = require('usage');    
setInterval(function() {
    usage.lookup(worker.process.pid, function(err, result) {
        console.log(result);
        if(result.cpu > 90){
            worker.kill();
        }
    });
}, 5000)
03.08.2014
  • На самом деле это не сработало, так как отчетность зависит от работника. Что происходит в моем случае, так это то, что рабочий полностью застревает и перестает сообщать. Я добавляю в качестве ответа то, к чему я вернулся 13.08.2014
  • На самом деле у меня был похожий случай с модулем Postgresql, где у него заканчивались клиенты и очистки их было недостаточно, и я реализовал похожее решение. После того, как я ответил, я также заметил, что result.cpu неправильно работает с Mac OSX. Вы тестировали его на Mac или Linux? Мне любопытно, не работала ли логика из-за Mac. 14.08.2014

  • 2

    ОК, так вот. Оказывается, мой работник абсолютно застрял. Не знаю почему, но это может быть проблема с кластером (то, что вы называете кластером %^&$) В любом случае, мне приходилось мониторить воркеры мастером. Что я сделал, так это использовал cron для ежеминутного отчета от каждого работника мастеру, например:

    process.send({id:cluster.worker.id})

    Мастер получит это сообщение и узнает, что этот рабочий жив и здоров. Затем мастер ведет подсчет отсутствующих рабочих ответов. Через 5 минут рабочий погибает, если счетчик достигает 0 (уменьшается раз в минуту)

    Вот как я достиг (моей собственной) цели — убить застрявшего рабочего через несколько минут. Это не полное решение, и я до сих пор не знаю, что вызывает зависание воркеров без каких-либо исключений. Но это жизнь прямо сейчас.

    13.08.2014
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..