首页 文章

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

提问于
浏览
1

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

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

我想我应该使用 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个正在运行的实例

update 如果 clusterfork - 行为相同并不重要 .

update 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 回答

  • 2

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

    对不起,我认为解决方案是使用别的东西,因为PM2相当有限 . 缺乏增加 Worker 的能力对我来说是一个交易障碍 .

    我知道如果你正在使用群集,你可以在命令行上“缩放”,但我不知道如果你使用fork,为什么你不能启动更多的实例 . 这没有道理 .

  • 0

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

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

    顺便说一下, autorestart 默认为 true .

相关问题