如何在集群模式下使用 pm2 启动 node.js 应用程序?
How to start node.js app with pm2 in cluster mode?
我们正尝试在 ubuntu 14.04 上使用带有八核处理器的 pm2 0.12.8 启动我们的应用程序。 git 集线器上的自述文件有一个非常直接的命令,用于集群模式下的 运行ning 节点应用程序。
#集群模式
$ 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 只列出了一个实例。
为什么?
任何建议
谢谢
您是否尝试过启动固定数量的进程?即
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 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_mode),所以你应该在更改为集群模式之前删除所有进程列表,因为 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
您可以在这里获得最好的信息: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 设置为集群,以便 PM2 知道您想要在每个实例之间进行负载平衡,默认情况下它不会
然后启动进程文件:
pm2 开始processes.json
-i 或 instances 选项可以是:
0/max 在所有 CPU 上传播应用程序
-1 将应用程序分布到所有 CPU - 1
number 将应用程序分布在 number 个 CPU 上。
我们正尝试在 ubuntu 14.04 上使用带有八核处理器的 pm2 0.12.8 启动我们的应用程序。 git 集线器上的自述文件有一个非常直接的命令,用于集群模式下的 运行ning 节点应用程序。
#集群模式
$ 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 只列出了一个实例。
为什么? 任何建议
谢谢
您是否尝试过启动固定数量的进程?即
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 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_mode),所以你应该在更改为集群模式之前删除所有进程列表,因为 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
您可以在这里获得最好的信息: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 设置为集群,以便 PM2 知道您想要在每个实例之间进行负载平衡,默认情况下它不会
然后启动进程文件:
pm2 开始processes.json -i 或 instances 选项可以是:
0/max 在所有 CPU 上传播应用程序
-1 将应用程序分布到所有 CPU - 1
number 将应用程序分布在 number 个 CPU 上。