如何在集群中使用sails(使用更多内核)?

Pat*_*ryk 6 cluster-computing node.js sails.js

我正在尝试使用cluster库启动sails.js应用程序以允许它生成更多进程以使用我的机器的所有核心,但不知何故,与express一起使用的方法在这里失败.

var cluster = require('cluster'),
    numCPUs = require('os').cpus().length;

// create the server 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  cluster.on('exit', function(worker, code, signal) {
    console.log('worker %d died (%s). restarting...', worker.process.pid, signal || code);
    cluster.fork();
  });
} else {
  // Start sails and pass it command line arguments
  require('sails').lift(require('optimist').argv);
  console.log("Sails forked");
}
Run Code Online (Sandbox Code Playgroud)

之后我通常通过以下方式运行它:

$ sails lift
Run Code Online (Sandbox Code Playgroud)

但是当我为这个性能测试运行apache bench时,我得到了相同的结果.有帮助吗?我错过了什么吗?

编辑

甚至当我把console.logcluster.fork如果部分然后我没有得到的输出.

Pat*_*ryk 13

最后我在其中一个问题中提到过使用了pm2模块https://github.com/balderdashy/sails/issues/170sails

首先应该安装它:

$ npm install -g pm2
Run Code Online (Sandbox Code Playgroud)

然后运行脚本:

$ pm2 start app.js -i max
Run Code Online (Sandbox Code Playgroud)

然后你可以用以下方法监控它:

$ pm2 monit
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或列出进程:

$ pm2 l
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这不起作用,因为所有sails实例将尝试在同一端口上启动.关于如何动态地在不同端口上工作的任何想法? (2认同)