Discourse にフォーラムを運営していますが、送信速度制限(1 秒あたり 20 件)が低速になっています。
Discourse で送信速度制限を設定することは可能でしょうか?
この質問をした理由は、unsubscribe_keys テーブルには毎日約 50 万件のレコードが蓄積されているのに対し、mail_log には 9,000 件、skipped_mail_log には 1,000 件しかないことに気づいたからです。当フォーラムのメンバー数も約 50 万人です。
これがメール送信が速すぎることに起因し、何か奇妙な問題を引き起こしているのではないかと思い、送信速度をスロットリングしようとしたのですが、うまくいきませんでした。
Unsubscribe_keys
email_log
pfaffman
(Jay Pfaffman)
2
より高速なメールサーバーを導入するか、設定を変更してメールの送信を可能にする必要があります。
サマリーメールの送信頻度や、1 日あたりの最大送信数を変更できます。
レート制限の設定はありません。
送信レートが必要かどうかはわかりませんが、仮に60回/秒まで増やせたとしても、サーバー側が送信しすぎてブロックされる可能性は残ります。
なぜ多くの Discourse メンバーにメールが送信されているのでしょうか。具体的にどのような内容のメールなのでしょうか。それがより重要な質問です。
通常の Discourse インストールでは、「全ユーザー」宛てのメールはダイジェストのみで、それも 1 週間以上サイトにアクセスしていないが、1 年以上離れていないユーザーに限定されています。
一般的に、メールが届くのは誰かが直接あなたに話しかけた場合のみで、それも過去 10 分間にウェブブラウザでサイトにアクセスしていない場合に限られます。
以前、数か月前にイベントを行いました。そのイベントでは約9万人のメンバーが登録しました。現在、彼らが数週間離れる可能性があるため、システムからダイジェストメールが送信されました。
j127
9
解決策は見つかりましたか?Amazon SES に切り替えようとしたところ、初期制限が秒間 14 通であることを知りました。Discourse が SES にどれくらいの速さでメールを送信するかは不明です。このサイトでは大量のメールが送信されます。
Discourse が送信するメールの最大レートをご存知の方はいらっしゃいますか?1 秒間に 14 通を超える送信を試みるでしょうか?
もし送信が速すぎるとすれば、すべてのユーザーのダイジェスト送信時間を週にわたって均等に分散させ、ある 1 日(当サイトのインポート記念日)に大量に送信するのではなく、スクリプトを作成するのが良いアイデアかもしれません。
編集: これが問題かどうかを判断するために、Mandrill のログを確認すればよいことに気づきました。Mandrill による追加のスロットリングがなければ、最大で約 8 通/秒の制限があると思うので、問題ないはずです。
neounix
(Dark Matter)
10
こんにちは、Josh さん!
ダイジェストメールについては、コンテナビルドファイルで以下の Discourse グローバル設定を 420 にすることで、1 秒あたり 14 通に制限できます。
DISCOURSE_MAX_DIGESTS_ENQUEUED_PER_30_MINS_PER_SITE: 420
これは「完全に」ご希望の通りではありませんが、非常に近い値です。
ご投稿にある「1 秒あたり 14 通」を 30 秒で割ると 420 になるため、このグローバル設定により、ダイジェストメールは約 30 分あたり 420 通に制限されます(コードの記述通りです)。
参考リンク:
もちろん、SMTP チャネルで他のメールも送信している場合は、この値を下げる必要があります。あるいは、ダイジェストメール専用の別のチャネルを設定することも可能です(私たちが行っているように)。
注:このグローバル設定のデフォルト値は 30 分あたり 10,000 通に設定されています。私の感覚では、これは 1 時間あたりのダイジェスト数が非常に多すぎます。そのため、毎月の SendGrid の請求額を「妥当」な範囲に抑えるため、この値を大幅に下げて設定しています。
30 分あたり 30 通のダイジェストは、1 日で 1,440 通、1 ヶ月で約 43,200 通になります(数日前にこの変更を加える前は、ダイジェストを非常に多く送信していました)。来月には、これを 30 分あたり約 60 通、つまり 1 ヶ月で約 86,400 通前後に引き上げる予定です。
参考になれば幸いです。