Heroku中的进程类型和Dynos有啥区别
Posted
技术标签:
【中文标题】Heroku中的进程类型和Dynos有啥区别【英文标题】:What is the difference between Process Types and Dynos in HerokuHeroku中的进程类型和Dynos有什么区别 【发布时间】:2018-03-14 18:00:10 【问题描述】:我在 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 欧元/月的费用。
所以我的问题是:
-
进程类型和 Dynos 有什么区别?
我可以在一个 Dyno 中运行 2 个进程类型吗?
我可以运行 1 个免费的 Dyno(用于后端开发)和 1 个 Hobby Dyno(用于后端产品)吗?
【问题讨论】:
【参考方案1】:考虑这个简单的带有后台工作程序的 Web 应用程序示例,它有 web
进程和 worker
进程。当此类应用程序接收到大量网络流量,但处理的后台作业很少时,您可以增加 web
进程的 dyno 数量,但 worker
进程只有一个 dyno。每个过程也可以有不同的测功机大小。您可以将 performance-l dyno 用于web
进程,将standard-1x 用于worker
进程,而不是使用更多的测功机。换句话说,进程类型描述了在一个应用程序中协同工作的不同进程。它们不应该像您的情况那样是不同的应用程序。
没有。您可以在多个测功机上运行一种进程类型。
从技术上讲,您可以在免费测功机上运行一个进程,在业余爱好上运行另一个进程,但它不适用于您的情况。升级到专业测功机后,所有流程都必须在专业测功机上运行。
您的Procfile
完全错误。您必须拥有进程类型名称 web
才能接收 Web 流量。如果您启动当前设置,您将运行两个进程,但它们永远不会收到任何 Web 请求。 Heroku 文档中对此进行了描述,只有web
进程可以接收网络流量,并且您只能拥有一个这样的进程。因此,要运行两个版本的应用程序,您需要创建两个不同的 Heroku 应用程序。理想情况下,您应该允许通过环境变量配置您的应用程序,以便您可以将相同的代码部署到两个应用程序。
【讨论】:
谢谢,但我的应用不应该接收网络请求,因为它们实际上是在监听 Firebase 数据库中的更改。以上是关于Heroku中的进程类型和Dynos有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 springboot-gradle 为多 Web 服务器设置 dynos 和 procfile
使用 socket.io-redis 和 RedisToGo 在 Heroku 上扩展到 2+ dynos
我是不是也必须为 Heroku 上的 staging 应用程序购买 dynos?
将 Django 应用程序推送到 Heroku 后,Dynos 字段为空白