質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

解決済

2回答

289閲覧

railsでメールを一斉配信したいのですが教えてください。遅いことでお客様に迷惑がかかってしまっております・・・。

akikko

総合スコア32

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2021/07/14 13:49

railsを使用した実アプリを運用しております。
急にバズりはじめ、おおよそ3万人近くのお客様に毎日メール配信する必要がでてきました。

しかし、1通送るのに2秒ぐらいかかっており、1件ごとの処理のため、
完了までに数時間かかってしまっております。

配信速度を上げるために何をすればよいのでしょうか?

非常に困っておりまして、どなたか教えて頂けますと幸いです。

###現在の環境

  • rails5
  • heroku
  • heroku scheduler でメール配信(一日1回)
  • amazon SES
    SESの設定では100通/秒、100万通/1日 が審査済みで可能。(まったく使えておりません????)

###メール送信controller
controller(each doで1件1件メールアドレスを取得し、メールを飛ばしています)

supporters = Supporter.where(activation: 1, agreement: 1).pluck(:email, :name) supporters.each do |supporter| send_email(@report, supporter, @url, @no_thanks) end

###mailers

mail(  subject: @report_title,  to: @address,  from: '"報告" <##@####>' ) do |format|  format.text end

どうぞ教えて頂けますと本当にありがたいです。
よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

send_email の内容がわからないのでなんとも言えないのですが、
Parallel などのGemを使って並行処理を行うなども考えられると思います。

投稿2021/07/14 14:31

mather

総合スコア6759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akikko

2021/07/14 14:54

ありがとうございます!! send_emailの中身はmailersに書かせて頂いたような簡単なメール送信内容です。 メール内容も簡単なテキストメールです。 なるほど!このようなgemがあるのですね!!凄いっ!大変助かります。ありがとうございます! こちらのgemで並列処理が可能なんですね。少し調べてみたのですが、 イメージとしましては、each doの引数をスレッドで処理するということなのでしょうか? これが可能でしたら、それこそ何分の1にもできるということですか!?
mather

2021/07/14 15:00

gemの使い方については公式ドキュメントを参考にしてください。 https://github.com/grosser/parallel 同時スレッド数などを調整可能なのでSESの制限に配慮して設定する必要があります。 うまく送信処理を並列実行できれば全体の処理時間は短くできる可能性はあります。
akikko

2021/07/16 15:42

ご返事遅くなりまして申し訳ございません。 大変ありがとうございます!!教えて頂いたparallelで凄まじく簡単に並列処理を導入することができました! 本日実装しまして、明日本番です。本番では28000名程度にメールが配信されますため、エラー等が起こらないかドキドキです。 教えて頂いて本当にありがとうございます!
guest

0

メーリングリストを構築すればどうでしょう

投稿2021/07/14 14:10

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akikko

2021/07/14 14:17 編集

ご返事大変ありがとうございます!! 具体的にはどういうことなのでしょうか?? イメージとしましては、1秒に80通ぐらい送れる状態を作りたいと思っております
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問