如何用 PM2 生成 worker

How to spawn worker with PM2

通过使用 PM2,我失去了 运行 我用来生成 worker 的本机集群的能力,例如:

if (cluster.isMaster) {
  cluster.schedulingPolicy = cluster.SCHED_NONE;
  for (var i = 1; i < CPUs; i++) {
    cluster.fork();
  }
  Object.keys(cluster.workers).forEach(function(id) {
    cluster.workers[id].on('message', logpi);
  });
  cluster.on('death', function(worker, code, signal) {
    console.error('Death:', worker.pid);
    cluster.fork();
  });
  cluster.on('exit', function(worker, code, signal) {
    console.error('Exit:', worker.pid);
    cluster.fork();
  });
  require('./worker.js');
} else {
  require('./server.js');
}

在集群模式下启动 PM2 时,我将如何生成 worker $ pm2 start app.js -i 0

当使用pm2的集群模式时,pm2实现master部分给你,没办法注入worker.js到master(pm2)。

你的app.js没用,你可以直接使用server.js启动你的app,像这样:

pm2 start server.js -i 0

可以向server.js注入worker.js,比如尝试锁定一个文件(https://github.com/baudehlo/node-fs-ext),如果锁定,则运行worker.js。