我正在开发一个项目,该项目通过 Rails Worker 启动一个进程,该进程非常消耗资源,并且只能由 Heroku 上的 Performance Worker 正确处理,1X 个 Worker 被杀死,因为它们使用了太多 RAM,2X 个 Worker 可以几乎无法处理超出 RAM 限制 160% 的负载。绩效 worker 可以很好地完成工作,没有任何问题。
我的问题是,有没有办法在作业启动之前动态地将 Dyno 大小切换为性能,然后在作业完成或队列为空时将其缩小?
我知道 HireFire 存在,但据我所知,这项服务只会根据队列长度等增加工作人员数量?我想到的另一个可能的解决方案是使用 Heroku API,它有一个 Dyno 端点,可以在作业开始之前调整工作器 dyno 的大小,然后在作业结束时重新调整大小。
还有其他人对此问题有其他建议、想法或策略吗?
谢谢!
最佳答案
最好的方法就是您提到的方法:使用 Heroku Platform API在开始工作之前放大 Dyno 尺寸,然后再缩小。
这是因为像 HireFire 这样的工具只能通过检查应用程序响应时间、路由器队列等内容来工作,因此它们无法知道您将要运行某些作业,然后为此进行扩展。
关于ruby-on-rails - 在 Heroku Rails 应用程序上动态缩放 Dyno 工作线程大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725148/