在我们的应用程序中,我们使用 rake 任务向大约 11 000 个用户发送邮件。每个电子邮件发送都作为延迟作业执行,如下所示。
@Users.each do |a|
a.delay.send_email(body,text)
end
两周前它工作得很好,但突然变慢了。意味着它将在一天内发送所有电子邮件,但目前需要时间。
我们试图关注这个性能问题,但到目前为止找不到任何东西。1.我们调查了代码,尝试了单个延迟作业。注释掉从 db 等获取的部分。但它是在同一时间做的 2. 尝试了注释掉的电子邮件发送部分。但是执行延迟作业所花费的时间是相同的。
后来注意到heroku工作进程dyno。我们目前已经购买了 1 个 Worker 和 2 个 Web。这就是它延迟的原因。如果是这样,它以前是如何工作的?添加更多工人会提高性能吗?