后台工作经常发生并且吃掉记忆

时间:2017-08-18 07:33:10

标签: ruby-on-rails-4 notifications cron background-process sidekiq

我想优化我的通知系统,现在它是如何运作的:

每次在应用程序上发生某些更改时,我们都会调用后台作业(Sidekiq)来计算某些值,然后通过电子邮件通知用户。

这种方法在一段时间内运作良好,但突然间我们发现了内存泄漏,因为经常有很多动作,我们每秒大约有30-50名工人,所以我需要重构这个。

我想做的是,不要立即运行 worker ,而是将其存储在数组中并稍后执行。

但我担心这也会导致问题,但只是“延迟”问题。

我期待听到更多的方法和解决方案。

提前致谢

1 个答案:

答案 0 :(得分:0)

所以我找到了一个非常有趣的解决方案:

我将值Redis直接存储为key - value,其中值为数据集,数据I稍后需要进行计算。然后我使用简单的cron作业,它发生的服务负责从Redis读取数据并计算它们。我优化了Sidekiq工作人员只有在执行cron时才能工作,一切都工作得很好,甚至比以前快得多。

我仍然渴望听到是否有其他方法/解决方案。

由于