在Heroku Rails应用程序上动态缩放Dyno工作程序大小



我正在进行一个项目,该项目通过Rails工作人员启动流程,这是一个非常耗费资源的项目,只有Heroku上的Performance worker才能正确处理,1X工作人员因使用过多RAM而死亡,2X工作人员几乎无法处理超过其RAM限制160%的负载。一个绩效工作者做得很好,没有任何问题。

我的问题是,有没有一种方法可以在作业启动前将Dyno大小动态切换为性能,然后在作业完成或队列为空时将其缩小?

我知道HireFire存在,但据我所知,这项服务只会根据队列长度等增加员工数量?我想到的另一个可能的解决方案是使用Heroku API,它有一个Dyno端点,在作业开始前调整工作者Dyno的大小,然后在作业结束时重新调整大小。

其他人对这个问题有其他建议、想法或策略吗?

谢谢!

最好的方法是您提到的方法:在开始工作之前使用Heroku平台API放大Dyno大小,然后再缩小。

这是因为像HireFire这样的工具只能通过检查应用程序响应时间、路由器队列等来工作——所以他们无法知道你将要运行某个作业,然后为此进行扩展。

根据使用的具体情况,您可以在您的procfile中创建一个不同的dyno类型,该类型只运行这个特定的worker,并且总是缩放到performance,但不总是在运行吗?您甚至可以通过一次性运行来运行它,而不是潜在地扩展它(这也可以通过API来完成,大致相当于heroku run ...)。也就是说,@rdegges的回答肯定有效。

相关内容

  • 没有找到相关文章

最新更新