gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中管理后台服务器池

转载 作者:行者123 更新时间:2023-12-02 01:39:39 25 4
gpt4 key购买 nike

我们的 Rails 应用程序有一些非常密集的后台进程,有时需要几个小时才能运行。我们正在使用 delayed_job,并会考虑转向 Resque 或 Sidekiq 的免费版本,这在这个问题的上下文中是有意义的。

对于某些作业,我们在所有处理器上达到 100% 的 CPU,目前后台处理器与 Nginx、Rails 和 Postgres 位于同一台物理服务器上。我们还预计负载会增加。

我们希望将后台处理转移到商品级批处理 VM 池中,并最好根据需要启动它们。我的想法是将执行代码提取到小应用程序中,然后将它们放到批处理虚拟机上。

我不确定的是如何对此进行编码,以及如何在不同 VM 之间对作业队列进行负载平衡。这是 delayed_job/Reqsue/Sidekiq 可以做的事情,还是我需要编写代码?

编辑

我在这个主题上找到了一些有用的链接

http://www.slideshare.net/kigster/12step-program-for-scaling-web-applications-on-postgresql

Use multiple Redis servers in Sidekiq

https://stackoverflow.com/a/19540427/993592

最佳答案

我个人的偏好是 Sidekiq。我会有点担心“几个小时”的工作以及如果他们在中间失败会发生什么。默认情况下,Sidekiq 会尝试重新运行它们。你可以改变它,但你一定要仔细考虑这个场景。这当然适用于您使用的任何后台作业处理系统。恕我直言,我会尝试找到一种方法将这些大工作分解成较小的工作。即使它只是“作业第 1 部分运行然后将作业第 2 部分排入队列,等等”。

至于可扩展性,Sidekiq 唯一真正的限制是 Redis。请参阅此处了解一些选项:https://github.com/mperham/sidekiq/wiki/Sharding

至于负载均衡,Sidekiq默认做的。我现在运行两个从单个 Redis 实例中提取的 sidekiq 服务器。每个有 25 个 worker ,大约有 12 个队列。效果非常好。

关于ruby-on-rails - 如何在 Rails 中管理后台服务器池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29165325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com