后台作业非常频繁并且吃内存
Background jobs occur very frequently and eat memory
我想优化我的通知系统,现在它是这样工作的:
每次应用程序发生变化时,我们都会调用后台作业 (Sidekiq) 来计算一些值,然后通过电子邮件通知用户。
这种方法在一段时间内效果很好,但是突然间我们发生了内存泄漏,因为有很多操作非常频繁,我们每秒大约有 30-50 个工人,所以我需要重构它。
我想做的是,不是立即 运行 worker,而是将其存储在数组中并稍后执行。
不过恐怕也会出问题,只是"delayed"的问题。
我也期待听到更多的方法和解决方案。
提前致谢
所以我找到了一个非常有趣的解决方案:
我将值直接存储到 Redis
作为 key - value
,其中值是数据集,其中包含我稍后需要用于计算的数据。然后我使用简单的 cron 作业,它发生服务负责从 Redis 读取数据并计算它们。我优化了 Sidekiq worker,使其仅在执行 cron 时才工作,一切都运行良好,甚至比以前快得多。
我仍然很想知道是否还有其他 approach/solution。
谢谢
我想优化我的通知系统,现在它是这样工作的:
每次应用程序发生变化时,我们都会调用后台作业 (Sidekiq) 来计算一些值,然后通过电子邮件通知用户。
这种方法在一段时间内效果很好,但是突然间我们发生了内存泄漏,因为有很多操作非常频繁,我们每秒大约有 30-50 个工人,所以我需要重构它。
我想做的是,不是立即 运行 worker,而是将其存储在数组中并稍后执行。
不过恐怕也会出问题,只是"delayed"的问题。
我也期待听到更多的方法和解决方案。
提前致谢
所以我找到了一个非常有趣的解决方案:
我将值直接存储到 Redis
作为 key - value
,其中值是数据集,其中包含我稍后需要用于计算的数据。然后我使用简单的 cron 作业,它发生服务负责从 Redis 读取数据并计算它们。我优化了 Sidekiq worker,使其仅在执行 cron 时才工作,一切都运行良好,甚至比以前快得多。
我仍然很想知道是否还有其他 approach/solution。
谢谢