Heroku中Process Types和Dynos有什么区别

时间:2017-10-03 13:51:49

标签: heroku heroku-cli

我在Heroku订阅了一个Hobby计划。

计划的详细信息指定它最多允许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(用于backend-dev)和1个Hobby Dyno(用于后端产品)吗?

1 个答案:

答案 0 :(得分:1)

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

  2. 没有。您可以在多个dynos上运行一个Process Type。

  3. 从技术上讲,你可以在免费dyno和另一个爱好上运行一个进程,但它不会在你的情况下工作。当您升级到专业dynos时,所有进程必须在专业dynos上运行。

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