如何在集群模式下使用pm2启动node.js应用程序?

如何在集群模式下使用pm2启动node.js应用程序?,node.js,ubuntu,cluster-computing,pm2,Node.js,Ubuntu,Cluster Computing,Pm2,我们正在尝试在Ubuntu14.04上用八核处理器启动pm2 0.12.8应用程序。GitHub上的ReadMe有一个非常直接的命令,用于在集群模式下运行节点应用程序 pm2 stop my-node-app pm2 delete my-node-app pm2 start app.js --name "my-node-app" -i 2 // to create 2 process #群集模式 $ pm2 start app.js -i 0 **# Will start max

我们正在尝试在Ubuntu14.04上用八核处理器启动pm2 0.12.8应用程序。GitHub上的ReadMe有一个非常直接的命令,用于在集群模式下运行节点应用程序

pm2 stop my-node-app
pm2 delete my-node-app
pm2 start app.js --name "my-node-app" -i 2 // to create 2 process
#群集模式

$ pm2 start app.js -i 0        **# Will start maximum processes with LB depending on available CPUs**
$ pm2 start app.js -i max      **# Same as above, but deprecated yet.**
但上述命令对我们不起作用。当我们尝试运行这些命令时,pm2只列出了一个实例

为什么?? 有什么建议吗


谢谢

您是否尝试启动固定数量的进程?i、 e

pm2 start app.js -i 2 //should start two instances.
“pm2监测”向你展示了什么

也尝试

pm2 stop all
pm2 delete all 
然后

pm2 start app.js -i 0

如果停止pm2中的进程,即使它没有运行,它仍然会为它保留一个cpu。您应该始终使用pm2 delete

因为您希望使用流程文件来管理pm2,所以流程文件应该类似于以下内容:

    // ecosystem.js
    {
    "apps" : [{
      "name"      : "API",
      "script"    : "server.js",// name of the startup file
      "instances" : 4,          // number of workers you want to run
      "exec_mode" : "cluster",  // to turn on cluster mode; defaults to 'fork' mode 
      "env": {
        "PORT"      : "9090" // the port on which the app should listen
      }
      // for more options refer : http://pm2.keymetrics.io/docs/usage/application-declaration/#process-file
    }]
    }
使用以下命令分别运行此应用程序以启动和停止:

$ pm2 start ecosystem.js
$ pm2 stop ecosystem.js

我想你们可能会用普通模式(fork_模式)启动这个项目,所以你们应该在切换到集群模式之前删除所有进程列表,因为pm2会记住你们的启动选项

pm2 delete all
pm2 start app.js -i [NUMBER_OF_INSTANCE|max]
新鲜工艺

pm2 start app.js --name "my-node-app" -i 2 // to create 2 process
使现有的运行进程。如果是fork模式,则必须停止并删除当前正在运行的进程。只有它才能创建集群模式

pm2 stop my-node-app
pm2 delete my-node-app
pm2 start app.js --name "my-node-app" -i 2 // to create 2 process

您可以在此处获得最佳信息:

要启用群集模式,只需传递-i选项:

pm2 start app.js -i max
最大值意味着PM2将自动检测可用CPU的数量,并运行尽可能多的进程

或者通过js/yaml/json文件:

module.exports = {
  apps : [{
    script    : "api.js",
    instances : "max",
    exec_mode : "cluster"
  }]
}
注意:您需要将exec_模式设置为cluster,以便PM2知道您希望在每个实例之间实现负载平衡,默认情况下不会

然后启动流程文件:

pm2启动进程.json -i或实例选项可以是:

0/max将应用程序分布到所有CPU

-1将应用程序扩展到所有CPU-1


number将应用程序分布到number CPU。

与pm2 start app.js--test-i 2一样,使用JSON应用程序声明传递参数delete all是关键。PM2将记住您上次在fork模式下启动应用程序的时间,因此除非您将其删除,否则它将以fork.PM2 start app.js-i max=start with max的形式重新启动instance@HolgerWill无论我尝试什么,pm2 monit for me都会显示空白屏幕。有什么线索吗?在我的例子中,使用--name标志强制pm2使用集群模式