Heroku 中的进程类型和 Dynos 有什么区别

Man*_*UEZ 6 heroku heroku-cli

我在 Heroku 订阅了一个爱好计划。

该计划的详细信息指定它最多允许 10 个过程类型。

所以我开发了一个带有以下 Procfile 的应用程序:

backend-dev: node ./backend-dev/backend.js
backend-prod: node ./backend-prod/backend.js
Run Code Online (Sandbox Code Playgroud)

代表 2 种流程类型,对吗?

但是当我运行它时:

heroku ps:scale backend-dev=1
heroku ps:scale backend-prod=1
Run Code Online (Sandbox Code Playgroud)

我最终得到了两个 Hobby Dynos……由于计划还指定了 7 欧元/月/Dyno,我的费用为 14 欧元/月。

所以我的问题是:

  1. Process Types 和 Dynos 有什么区别?
  2. 我可以在一个 Dyno 中运行 2 个进程类型吗?
  3. 我可以运行 1 个免费 Dyno(用于后端开发)和 1 个 Hobby Dyno(用于后端生产)吗?

Mic*_*iak 5

  1. 考虑这个带有后台工作程序的 Web 应用程序的简单示例,因此它具有web进程和worker进程。当此类应用程序接收大量 Web 流量,但处理的后台作业很少时,您可以增加web进程的 dyno 数量,但进程只有一个 dyno worker。每个过程也可能有不同的测功机大小。您可以使用 performance-l dyno for webprocess 和 standard-1x for workerprocess ,而不是使用更多的dynos 。换句话说,进程类型描述了在一个应用程序中协同工作的不同进程。它们不应该是与您的情况不同的应用程序。

  2. 不可以。您可以在多个 dynos 上运行一种进程类型。

  3. 从技术上讲,您可以在免费 dyno 上运行一个进程,而在业余爱好上运行另一个进程,但它不适用于您的情况。当您升级到专业测功机时,所有流程都必须在专业测功机上运行。

Procfile的全错了。您必须具有进程类型名称web才能接收 Web 流量。如果您开始当前的设置,您将运行两个进程,但它们永远不会收到任何 Web 请求。Heroku 文档中对此进行了描述,只有web进程可以接收网络流量,并且您只能拥有一个这样的进程。因此,要运行您的应用程序的两个版本,您需要创建两个不同的 Heroku 应用程序。理想情况下,您应该允许通过环境变量配置您的应用程序,以便您可以将相同的代码部署到两个应用程序。