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

Hit*_*sal 13 ubuntu cluster-computing node.js pm2

我们正试图在ubuntu 14.04上使用octa core proccessor以pm2 0.12.8开始我们的应用程序.git hub上的read me有一个非常直接的命令,用于在集群模式下运行节点应用程序.

#群集模式

$ 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.**
Run Code Online (Sandbox Code Playgroud)

但上述命令对我们不起作用.当我们尝试运行这些命令时,pm2只列出了一个实例.

为什么?任何建议

谢谢

Hol*_*ill 46

你试过启动固定数量的进程吗?即

pm2 start app.js -i 2 //should start two instances.
Run Code Online (Sandbox Code Playgroud)

什么"pm2 monit"告诉你什么?

也试试

pm2 stop all
pm2 delete all 
Run Code Online (Sandbox Code Playgroud)

然后

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

如果你在pm2中停止一个进程,即使它没有运行,它仍会保留一个cpu.你应该总是使用pm2删除

  • 删除全部是关键.PM2将记住您在fork模式下最后一次启动应用程序,因此除非您将其删除,否则它将以fork形式重新启动. (3认同)

小智 8

由于您要使用过程文件来管理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
    }]
    }
Run Code Online (Sandbox Code Playgroud)

使用以下命令分别运行和停止此应用程序:

$ pm2 start ecosystem.js
$ pm2 stop ecosystem.js
Run Code Online (Sandbox Code Playgroud)


Tha*_*han 8

对于新鲜工艺

pm2 start app.js --name "my-node-app" -i 2 // to create 2 process
Run Code Online (Sandbox Code Playgroud)

使现有的运行过程。如果是 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
Run Code Online (Sandbox Code Playgroud)