gpt4 book ai didi

ruby-on-rails - 如何在不妥协的情况下导入数百万用户 sidekiq

转载 作者:可可西里 更新时间:2023-11-01 11:37:44 24 4
gpt4 key购买 nike

我有这样的抽佣任务

task import_all: :environment do
Person.find_each do |p|
UserWorker.perform_async(p.to_global_id)
end
end

每个用户在 Sidekiq 上创造了大约 20 个新工作,这 20 个工作还创造了 4 或 5 个新工作。
结果我有 980k 用户,我的 redis 使用了将近 70% 的 CPU 使用率,排队超过 700 万个作业!
如何在不影响 CPU/内存的情况下导入所有这些用户?

最佳答案

您正在为每个 Person 生成一个后台工作程序,为什么不生成一个呢?

# some rakefile I'm guessing?
task import_all: :environment do
UserWorker.perform_async
end

# UserWorker.rb
class UserWorker
include Sidekiq::Worker
def perform
Person.find_each do |p|
# whatever you were doing in here before...
end
end
end

除非您拥有大规模并行后端,否则将工作分解为单个工作人员并没有太多优势。您需要在此处适本地处理/记录错误,并可能单独重试这些错误,但一般解决方案不需要如此细粒度的工作人员。

关于ruby-on-rails - 如何在不妥协的情况下导入数百万用户 sidekiq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951669/

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