在 Heroku Rails 应用程序上动态缩放 Dyno worker 大小
Scaling Dyno worker size dynamically on Heroku Rails application
我正在做一个项目,该项目通过 Rails worker 启动一个进程,该进程非常耗费资源,只能由 Heroku 上的 Performance Worker 正确处理,1X worker 被杀死,因为他们也使用大量 RAM 和 2X worker 几乎无法处理超过其 RAM 限制高达 160% 的负载。绩效工作者可以毫无问题地完成工作。
我的问题是,有没有一种方法可以在作业启动之前将 Dyno 大小动态切换为性能,然后在作业完成或队列为空后将其缩小?
我知道 HireFire 存在,但据我所知,这项服务只会根据队列长度等增加工作人员的数量?我想到的另一种可能的解决方案是使用 Heroku API,它有一个 Dyno 端点,在作业开始前调整 worker dyno 的大小,然后在作业结束时将其缩小。
对于这个问题,还有其他人有其他建议、想法或策略吗?
谢谢!
最好的方法是你提到的那个:在开始工作之前使用 Heroku Platform API 放大你的 Dyno 尺寸,然后再缩小。
这是因为像 HireFire 这样的工具只能通过检查应用程序响应时间、路由器队列等东西来工作 -- 所以他们无法知道你即将 运行 一些工作然后为此扩大规模。
根据具体的使用情况,您可以在您的 procfile 中创建一个独特的动态类型,它只 运行 这个特定的工人并且总是缩放到 performance
,但不总是 运行ning 吗?您甚至可以使用一次性 运行 来 运行,而不是潜在地缩放它(这也可以通过 API 完成,大致相当于 heroku run ...
)。也就是说,@rdegges 的回答肯定有效。
我正在做一个项目,该项目通过 Rails worker 启动一个进程,该进程非常耗费资源,只能由 Heroku 上的 Performance Worker 正确处理,1X worker 被杀死,因为他们也使用大量 RAM 和 2X worker 几乎无法处理超过其 RAM 限制高达 160% 的负载。绩效工作者可以毫无问题地完成工作。
我的问题是,有没有一种方法可以在作业启动之前将 Dyno 大小动态切换为性能,然后在作业完成或队列为空后将其缩小?
我知道 HireFire 存在,但据我所知,这项服务只会根据队列长度等增加工作人员的数量?我想到的另一种可能的解决方案是使用 Heroku API,它有一个 Dyno 端点,在作业开始前调整 worker dyno 的大小,然后在作业结束时将其缩小。
对于这个问题,还有其他人有其他建议、想法或策略吗?
谢谢!
最好的方法是你提到的那个:在开始工作之前使用 Heroku Platform API 放大你的 Dyno 尺寸,然后再缩小。
这是因为像 HireFire 这样的工具只能通过检查应用程序响应时间、路由器队列等东西来工作 -- 所以他们无法知道你即将 运行 一些工作然后为此扩大规模。
根据具体的使用情况,您可以在您的 procfile 中创建一个独特的动态类型,它只 运行 这个特定的工人并且总是缩放到 performance
,但不总是 运行ning 吗?您甚至可以使用一次性 运行 来 运行,而不是潜在地缩放它(这也可以通过 API 完成,大致相当于 heroku run ...
)。也就是说,@rdegges 的回答肯定有效。