我们正在尝试使用octa核心处理器在ubuntu 14.04上使用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.**
但上述命令对我们不起作用。当我们尝试运行这些命令时,pm2只列出了一个实例。
为什么呢? 任何建议
由于
答案 0 :(得分:38)
您是否尝试过启动固定数量的流程?即。
pm2 start app.js -i 2 //should start two instances.
“pm2 monit”会告诉你什么?
也试试
pm2 stop all
pm2 delete all
然后
pm2 start app.js -i 0
如果你在pm2中停止一个进程,它仍会为它保留一个cpu,即使它没有运行。你应该总是使用pm2删除
答案 1 :(得分:5)
由于您希望使用流程文件来管理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
答案 2 :(得分:1)
用于全新流程
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
答案 3 :(得分:1)
您可以在此处获得最佳信息:pm2 cluster mode
要启用集群模式,只需传递-i选项:
pm2 start app.js -i max
max表示PM2将自动检测可用的CPU数量并运行尽可能多的进程
或通过js / yaml / json文件
module.exports = {
apps : [{
script : "api.js",
instances : "max",
exec_mode : "cluster"
}]
}
注意:您需要将exec_mode设置为cluster,以便PM2知道要在每个实例之间进行负载平衡,默认情况下不会
然后启动进程文件:
pm2启动processes.json -i或instances选项可以是:
最大0 /最大,可将应用程序分布在所有CPU上
-1将应用分发到所有CPU-1
数字可将应用程序分布在多个CPU上。
答案 4 :(得分:0)
我认为您可能曾经以正常模式(fork_mode)启动该项目,因此您应在更改为集群模式之前删除所有进程列表,因为pm2会记住您的启动选项
pm2 delete all
pm2 start app.js -i [NUMBER_OF_INSTANCE|max]