0

PM2 を使用する前に、次のコード スニペットが残っています。

parentCluster = require('cluster');
numberOfWorkers = process.env.WORKERS || require('os').cpus().length;
if (parentCluster.isMaster) {
  logger.info('Starting parent cluster with %s workers', numberOfWorkers);
  for (_i = 1; 1 <= numberOfWorkers ? _i <= numberOfWorkers : _i >= numberOfWorkers; 1 <= numberOfWorkers ? _i++ : _i--) {
    worker = parentCluster.fork().process;
    logger.info('Forked worker %s', worker.pid);
  }
  parentCluster.on('fork', function(worker) {
    return logger.info('forked worker ' + worker.process.pid);
  });
  parentCluster.on("listening", function(worker, address) {
    return logger.info("Worker " + worker.process.pid + " is now connected to " + address.address + ":" + address.port);
  });
  parentCluster.on('exit', function(worker) {
    logger.warn('Worker %s has died. restarting...', worker.process.pid);
    return parentCluster.fork();
  });
} else {
  startServer();
}

ただし、現在はクラスタリングを処理する PM2 を使用しています。そして、 isMaster は決して true ではないようです。PM2がクラスターオブジェクトをどのように扱うかを誰かが明確にすることができますか? どうやら master は pm2 デーモンで正しく処理されているようで、コードでこのチェックを行う必要はもうありませんか?

4

1 に答える 1

1

クラスタリングはアプリケーションの外部 (pm2 内) で行われるため、クラスター モジュールをアプリケーション内に含める必要はありません。

于 2014-12-30T20:38:13.787 に答える