Кластеризация методом cluster.fork()

Поясните, пожалуйста, как именно работает метод cluster.fork()?

Имеется js-файл с таким кодом:

const os = require('os');
const cluster = require('cluster');

console.log('Master: ' + cluster.isMaster + ' ; PID: ' + process.pid);

if (cluster.isMaster) {
  console.log(`Главный процесс с pid ${process.pid}`);
  for (let i = 0; i < os.cpus().length - 2; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker) => {
    console.log(`Worker с pid ${worker.process.pid} умер`);
    cluster.fork();
  })
} else {
  console.log(`Worker process с pid ${process.pid} запущен`);
  setInterval(() => {
    console.log(`Процесс с pid ${process.pid} ещё работает`);
  }, 5000);
}

При запуске выдаёт выводит следующее:

введите сюда описание изображения

Если я правильно понимаю, метод cluster.fork() создаёт клон процесса, только выставляет ему влаг isWorker. Клонированный процесс запускает свой экземпляр приложения заново - в данном случае отрабатывает код всего файла сначала (а не с блока else). Правильно ли я понял этот момент - запуск приложения по новой для дочерних процессов?


Ответы (0 шт):