在Heroku dyno上运行多个进程是否可行?

10
我知道Heroku平台的内存限制,并且知道将应用程序分成Web和Worker Dynos可以使其更具可扩展性。然而,我仍然想在测试过程中同时运行异步任务和Web进程。由于Dynos很昂贵,我想在Heroku提供的免费实例上进行原型设计。

在同一个Dynos中作为Web进程的子进程或者新的进程生成一个新的作业是否存在任何问题呢?

1个回答

4
在更新的Cedar堆栈上,生成多个进程没有任何问题。每个dyno都是一个虚拟机,在内存和CPU使用方面没有特定限制(我认为大约是512MB内存和1个CPU核心)。按照某些堆栈(如Python)的更新安装说明将导致配置具有多个(Web服务器)进程。

安装在Web dynos上的软件可能因您使用的构建包而异;如果您的子进程需要特殊软件,则必须将其捆绑到应用程序中或(最好)自己制作构建包。

此时,我通常会提醒您,强烈建议在具有适当任务队列系统的工作人员dynos上运行异步任务,而不是在Web dynos上运行,但听起来您已经知道了。请记住,仅具有一个Web dyno的帐户(通常意味着“免费”帐户)将在一小时左右未收到任何Web请求后关闭该dyno,并且此时运行的任何后台进程都将被杀死。具有多个Web dynos的帐户不受此限制。


我为动态空闲处理的解决方法是,让其中一个 web 进程原子锁定一个数据库对象,然后检查工作进程是否正在运行,如果没有,则启动它。 - okw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接