2

我正在开发一个项目,该项目通过一个资源密集型的 Rails 工作人员启动一个进程,它只能由 Heroku 上的 Performance Worker 正确处理,1X 工作人员因为使用太多 RAM 而被杀死,而 2X 工作人员几乎无法处理负载超过其 RAM 限制高达 160%。绩效工作者可以毫无问题地完成工作。

我的问题是,有没有办法在作业启动之前将 Dyno 大小动态切换为 Performance,然后在作业完成或队列为空后将其缩小?

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

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

谢谢!

4

2 回答 2

1

最好的方法是你提到的那个:在开始工作之前使用Heroku Platform API来扩大你的 Dyno 大小,然后再缩小。

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

于 2016-08-02T16:21:55.040 回答
1

根据使用的具体情况,您也许可以在您的 procfile 中创建一个独特的 dyno-type,它只运行这个特定的工作程序并且总是缩放到performance,但并不总是运行?你甚至可以只用一次性运行来运行它,而不是潜在地扩展它(这也可以通过 API 完成,大致相当于heroku run ...)。也就是说,@rdegges 的答案当然应该有效。

于 2016-08-03T14:24:28.203 回答