【问题标题】:PM2 change cluster processes size at runtimePM2 在运行时更改集群进程大小
【发布时间】:2019-02-25 21:37:02
【问题描述】:

有谁知道是否可以在 NodeJS PM2 中更改运行时应用程序的集群进程数?

问候 菲利普

【问题讨论】:

  • 澄清一下,您是否在问是否可以在启动应用程序运行后更改集群进程的数量?

标签: javascript node.js pm2


【解决方案1】:

您可以使用pm2 scale 在运行时垂直缩放进程数,注意它仅适用于集群模式。 示例:

  • pm2 scale APPNAME 2 会将进程扩展到恰好 2 个实例。
  • pm2 scale APPNAME +2 将添加两个进程。
  • pm2 scale APPNAME -1 将删除一个进程。

source link

【讨论】:

  • 请注意,“pm2 scale APPNAME 2”不会添加两个进程,而是扩展到总共两个进程。使用“+2”添加两个进程。也请参阅我的答案以使用 Programmatic API 进行扩展。
【解决方案2】:

以json格式指定pm2设置:

{
 "apps": [{
    "name": "server",
    "script" : "index.js",
    "instances": 2,
    "exec_mode: "cluster",
    "cwd": "/path/to/script"
 }]
}

启动服务器:

pm2 start application.json

假设您想再添加 2 个实例,只需再次运行相同的命令:

pm2 start application.json

检查进程列表:

pm2 list

测试所有 4 个实例是否都在集群模式下运行:

pm2 restart server

它将重新启动 4 个进程中的每一个。

【讨论】:

    【解决方案3】:

    在运行时(应用程序启动后),有两种方法可以“扩展”应用程序:

    1) 使用命令行(记录在“实时扩展集群”下的here),如下所示:

    pm2 scale <app name> <n>
    

    请注意,它可以是集群将向上或向下扩展至的一致数字。也可以是添加,例如 pm2 scale app +3,在这种情况下,将向集群添加 3 个以上的工作人员。

    2) 使用 Programmatic API(文档为 here,但未记录规模)。由于没有记录,因此您可以这样做:

    pm2.scale(<APPNAME>, <SCALE_TO>, errback)
    

    请注意,这是将按比例放大或缩小的数字,而不是添加或删除的数字。下面是连接和扩展至 4 个实例的完整示例:

    var pm2 = require('pm2');
    pm2.connect(function (err) {
        pm2.scale('appname', 4, function(err, procs) {
            console.log('SCALE err: ', err);
            console.log('SCALE procs: ', procs);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-26
      • 2020-04-27
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2012-03-05
      相关资源
      最近更新 更多