私たちのアプリケーションでは、約11,000人のユーザーにメールを送信するためにrakeタスクを使用しています。各メール送信は、以下のように遅延ジョブとして実行されます。
@Users.each do |a|
a.delay.send_email(body,text)
end
2週間前は完璧に機能していて、突然速度が低下しました。1日ですべてのメールを送信しようとしていたことを意味しますが、現在は時間がかかります。
このパフォーマンスの問題を追跡しようとしましたが、これまでのところ何も見つかりませんでした。1.コードを調査し、単一の遅延ジョブで試行しました。dbなどから取った部分をコメントアウトしましたが、同時にやっています2.コメントアウトしたメール送信部分を試してみました。しかし、遅延したジョブを実行するのにかかった時間は同じでした。
後で、herokuワーカープロセスdynoについて気づきました。現在、1つのワーカーと2つのWebを購入しました。それが遅れている理由です。もしそうなら、それは以前どのように機能していましたか?ワーカーを追加するとパフォーマンスが向上しますか?