6

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

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

因此,我使用以下 Procfile 开发了一个应用程序:

backend-dev: node ./backend-dev/backend.js
backend-prod: node ./backend-prod/backend.js

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

但是当我运行它时:

heroku ps:scale backend-dev=1
heroku ps:scale backend-prod=1

我最终得到了两个 Hobby Dynos... 由于该计划还指定 7 欧元/月/Dyno,因此我需要支付 14 欧元/月的费用。

所以我的问题是:

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

1 回答 1

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

  2. 不,您可以在多个测功机上运行一种流程类型。

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

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

于 2017-10-04T22:25:16.777 回答