如何启动具有多个实例的 PM2

问题描述 投票:0回答:1

我正在通过 PM2 运行我的 Nodejs 代码。对于我的项目,我需要运行相同代码的多个 Nodejs 实例。所以我创建了下一个脚本“myscript.sh”:

cd ~/myproject    
PM2_HOME='.pm2_1' /usr/local/bin/node /usr/local/lib/node_modules/pm2/bin/pm2 start dist/app.js -- id=1 token=xxx isMaster=true
PM2_HOME='.pm2_2' /usr/local/bin/node /usr/local/lib/node_modules/pm2/bin/pm2 start dist/app.js -- id=1 token=yyy isMaster=false
. . .
PM2_HOME='.pm2_x' /usr/local/bin/node /usr/local/lib/node_modules/pm2/bin/pm2 start dist/app.js -- id=1 token=zzz isMaster=false

当我通过像

bash myscript.sh
这样的 CLI 运行它时它可以工作,但它不能通过 crontab 运行:

@reboot bash /home/user/myproject/myscript.sh

* * * * * bash /home/user/myproject/myscript.sh

我也尝试使用

pm2 startup
,但它不适用于
PM2_HOME='..'
参数,无论我设置为
PM2_HOME
,如.pm2_1,它仍然创建像/home/user/myproject/这样的环境.pm2。似乎
pm2 startup
仅适用于单个实例。

所以我的问题如何通过 crontab 运行 myscript.sh?

我不知道这是否与我的代码是用 TS 编写的相关。在本地主机上我像这样运行它:

npm start -- id=1 token=zzz isMaster=false

在package.json中设置start:

"start": "npm run build && node dist/app"
"build": "rimraf dist && tsc"
node.js typescript parameters cron pm2
1个回答
0
投票

要让 PM2 运行节点应用程序的多个实例,您需要使用集群模式

请参阅此处的文档:https://pm2.keymetrics.io/docs/usage/cluster-mode/

例如,您可以使用此命令启动应用程序的 4 个实例:

pm2 start app.js -i 4
© www.soinside.com 2019 - 2024. All rights reserved.