【问题标题】:Node/Express server deploy with Heroku and PM2使用 Heroku 和 PM2 部署 Node/Express 服务器
【发布时间】:2021-09-10 00:47:49
【问题描述】:

尝试通过 PM2 添加集群功能并通过我的 Node/Express 应用程序进行部署。

我已经设置了以下命令:

pm2 start build/server/app.js -i max

以上在本地运行良好。我正在通过 Performance 1X 在 Heroku 的暂存环境中测试该功能。

上面显示了命令的日志,但尝试了 1 个实例而不是 max。它显示成功运行 pm2 start 后的典型信息,但是您可以看到应用程序在之后立即崩溃。

感谢任何建议或指导。

【问题讨论】:

  • 为什么要尝试使用 pm2 来尝试在一个 dyno 内进行扩展,而不是通过运行 multiple dyno 进行扩展?参见例如devcenter.heroku.com/articles/scaling
  • @jonrsharpe 我计划通过多个测功机和 pm2 进行扩展。据我了解,通过 Heroku 进行自动缩放可以启动额外的测功机,但每个测功机(在我的生产情况下为性能 L)有 8 个内核。因此,我可以通过在现有基础架构上添加 pm2 来增加 y 吞吐量。

标签: node.js heroku pm2


【解决方案1】:

我最终使用了以下文档:https://pm2.keymetrics.io/docs/integrations/heroku/

将ecosystem.config.js 与以下内容一起使用:

module.exports = {
  apps : [
    {
      name: `app-name`,
      script: 'build/server/app.js',
      instances: "max",
      exec_mode: "cluster",
      env: {
        NODE_ENV: "localhost"
      },
      env_development: {
        NODE_ENV: process.env.NODE_ENV
      },
      env_staging: {
        NODE_ENV: process.env.NODE_ENV
      },
      env_production: {
        NODE_ENV: process.env.NODE_ENV
      }
    }
  ],
};

然后下面的package.json 脚本根据我要部署的环境处理部署,例如生产:

"deploy:cluster:prod": "pm2-runtime start ecosystem.config.js --env production --deep-monitoring",

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2018-12-28
    • 2022-01-09
    • 2018-02-09
    • 2018-03-16
    • 2019-07-07
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多