node.js - 如何使用PM2生成worker

标签 node.js worker pm2

通过使用 PM2,我失去了运行用于生成工作线程的 native 集群的能力,例如:

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 时,如何生成工作线程 $ pm2 start app.js -i 0

最佳答案

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

你的app.js没有用,你可以直接使用server.js启动你的应用程序,如下所示:

pm2 start server.js -i 0

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

关于node.js - 如何使用PM2生成worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105468/

相关文章:

javascript - Meteor 的 package.js 中的 HTTP 请求

javascript - 在 MongoDB 查询中使用 javascript 变量作为 $regex 的值

nuxt.js - 在特定端口并使用集群模式运行 pm2

javascript - 定义对象内联属性

javascript - 防止 react 简单 map 中的蓝色路径矩形

python - 在 uwsgi 应用程序中启动 APScheduler 最终会为每个 worker 分配一个调度程序吗?

java - Java对象的并发

ruby - 自己调用/安排sidekiq worker

node.js - 错误:尝试启动 Nodejs 服务器时监听 EADDRINUSE:::443 错误

node.js - 如何让socket.io在pm2集群模式下正常工作?