将worker添加到PM2池。不要重新加载/重新启动现有员工

时间:2015-08-16 23:31:30

标签: node.js pm2

Env。:Ubuntu上的Node.js,以编程方式使用PM2。

我在主代码上通过Node启动了PM2和3个实例。假设我使用PM2命令行删除其中一个实例。我可以将另一名工人加回到游泳池吗?这可以在不影响其他工人操作的情况下完成吗?

我想我应该使用start方法:

pm2.start({
 name : 'worker',
 script    : 'api/workers/worker.js',         // Script to be run
 exec_mode : 'cluster',        // OR FORK
 instances : 1,                // Optional: Scale your app by 4
 max_memory_restart : '100M',   // Optional: Restart your app if it reaches 100Mo
 autorestart : true
 }, function(err, apps) {
 pm2.disconnect();
 });

但是,如果使用pm2 monit,您将看到重新启动了2个现有实例,并且没有创建其他实例。结果仍然是2个正在运行的实例。

更新 clusterfork - 行为是否相同无关紧要。

更新2 命令行有scale选项(https://keymetrics.io/2015/03/26/pm2-clustering-made-easy/),但我没有在程序化API文档中看到此方法(https://github.com/Unitech/PM2/blob/master/ADVANCED_README.md#programmatic-api )。

2 个答案:

答案 0 :(得分:2)

我实际上认为这不能在PM2中完成,因为我有完全相同的问题。

我很抱歉,但我认为解决方案是使用其他东西,因为PM2相当有限。缺乏增加工人的能力对我来说是一个交易障碍。

我知道如果你正在使用群集,你可以在命令行上“缩放”,但是如果你使用fork,我不知道为什么你不能启动更多的实例。这毫无意义。

答案 1 :(得分:0)

据我所知,PM2的所有命令也可以通过编程方式使用,包括scale。查看CLI.js以查看所有可用的方法。

尝试在应用程序声明中使用force属性。如果force为真,您可以多次启动相同的脚本,这通常是PM2不允许的(根据Application Declaration docs

顺便说一句,autorestart默认为true