【问题标题】:How long should a Sidekiq job last?Sidekiq 的工作应该持续多长时间?
【发布时间】:2023-03-20 19:51:01
【问题描述】:

Sidekiq wiki 中写道:

  1. 让您的工作变得小而简单

我变得简单,我变得幂等和事务性,但什么是小?也许所需的内存和计算时间是一个很好的衡量标准?我的 Sidekiq 作业需要 10 秒到 30 分钟

我觉得 10 秒还可以,但是 30 分钟的长时间运行的任务呢?我正在将某种类型的所有数据从数据库加载到内存中,对它们运行冗长的计算,然后写回结果。一项工人工作中的所有三件事。

这样好吗?或者我应该从一个工作者作业中调用,多个运行小计算的工作者作业?问题是,这些小的计算可能需要一些复杂的哈希表来进行计算,建议不要在 Redis 中持久化,只需要小的简单值。

【问题讨论】:

    标签: ruby-on-rails ruby redis sidekiq


    【解决方案1】:

    这取决于您希望/必须多久调用一次作业,以及您是否可以接受需要这么长时间。

    如果您以比完成时间更短的间隔运行作业,那肯定是太长了。

    只有在您可以改善总运行时间(例如,如果其中一些可以同时运行)的情况下,将其拆分为多个工作人员才会在这里有所帮助

    所以经验法则一如既往:只要它适合您的需要就可以了。

    但是:

    • 对于长作业,您应该考虑到该作业可能会因任何原因(服务器崩溃等)在执行过程中失败。
    • 您还能在那里继续这项冗长的工作吗?还是会正常回滚?
    • 另外:如果在执行作业时更改了数据会发生什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-15
      • 2011-09-20
      • 1970-01-01
      • 2012-03-14
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多