【问题标题】:How jelastic automatic vertical scaling affects node server?jelastic 自动垂直伸缩如何影响节点服务器?
【发布时间】:2020-08-26 09:10:26
【问题描述】:

如果我运行简单的 node.js 服务器,jelastic automatic vertical scaling affects 怎么样?它是仅扩展 CPU、RAM 等资源,还是创建可在 parralell 中工作的新节点容器?

如果它只是扩展资源,那么我应该如何正确使用 pm2 集群模式在新 CPU 内核上生成新进程?

【问题讨论】:

    标签: jelastic


    【解决方案1】:

    一般来说,对于 Jelastic 认证的 NodeJS 模板 - 只有 --max_old_space_size 是根据可用内存量设置的,计算为系统内存量 * 0.9 可以通过将 AUTO_OLD_HEAP 环境变量的值设置为“false”来关闭此自动配置

    至于 CPU - PM2 可以根据可用 CPU 的数量自动统计启动进程的数量,只需添加

    实例:“最大”

    到生态系统文件,如此处所述https://pm2.keymetrics.io/docs/usage/cluster-mode/

    【讨论】:

    • 但是 pm2 会在节点扩展时添加实例吗?
    • 我已经做了一些测试,不幸的是,PM2 仅在启动时将 CPU 的数量应用为工作人员的数量,而不是在运行时观察 CPU 的数量。作为解决方法 - 可以使用“pm2 scale”功能,例如,您可以为 nodejs 用户创建 crontab,它定期计算系统中可用 CPU 的数量并根据它向上/向下扩展您的应用程序。可以使用这样的命令:pm2 scale draw-game $(grep -c ^processor /proc/cpuinfo) 其中“draw-game”(默认演示应用程序的名称)必须替换为您的。
    • @ZiiMakc,我假设您需要在更改每个容器的可用 cloudlets(CPU 和 RAM)数量后调整 pm2 实例的数量。目前可以将自定义操作附加到 onAfterSetCloudletCount 事件docs.cloudscripting.com/creating-manifest/events/… 并重新启动服务器(或容器)或调整 pm2 实例的数量。有一个示例如何在自动集群包github.com/jelastic-jps/wildfly/blob/master/addons/… 中使用此事件。
    • 其实可用CPU的数量是由cloudlets上限预先定义的(通常是灵活cloudlets的数量),所以只能通过修改cloudlets limit来改变。如果在 Jelastic 仪表板的环境向导中更改 cloudlets 限制,则会重新启动 NodeJS 进程,并且在重新启动时重新应用 pm2 进程计数(如果指定了“instances: max”)。 CPU 计数在运行时不会更改,因此 pm2 进程数将始终对应它(如果提到的设置存在于生态系统文件中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2020-09-17
    • 2020-09-30
    相关资源
    最近更新 更多