ダイジェストメール配信における無限ループ

皆様、こんにちは。

Discourse サーバーが無限ループに陥り、メールを停止せずに送信し続けています。以下は shared/standalone/log/rails/production.log の出力です:

Delivered mail 7db8eecd-c36a-419c-ae34-0561b08bae25@community.xx.cc (1322.2ms)
  Rendered user_notifications/digest.text.erb (Duration: 50.1ms | Allocations: 12577)
  Rendering user_notifications/digest.html.erb within layouts/email_template
  Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 139.5ms | Allocations: 26910)
  Rendering user_notifications/digest.text.erb
  Rendered user_notifications/digest.text.erb (Duration: 71.7ms | Allocations: 13505)
Delivered mail 5bbf2e54-96a8-437d-a032-69f98a00f22a@community.xx.cc (1485.2ms)
  Rendering user_notifications/digest.html.erb within layouts/email_template
  Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 70.9ms | Allocations: 20613)
  Rendering user_notifications/digest.text.erb
  Rendered user_notifications/digest.text.erb (Duration: 38.2ms | Allocations: 11390)

これは突然発生しました(おそらくダイジェストの cron が開始されたタイミングです:

現在、1 つのコアがダイジェストメールの送信に完全に占有されています。

  • アプリの再ビルドを行っても効果なし

  • 最新バージョンに更新しても変化なし

  • 「すべてのユーザーのサマリーメールを無効にする」をオンにしてアプリを再ビルドしても変化なし

    #### Installed
    
    ### 2.4.0.beta5
    

他にできることはありますか?これをどうすれば止められますか?
あらかじめありがとうございます。

「いいね!」 1

私の勘違いかもしれませんが、要約メールがキューイングされ、現在配信されているのだと思います。配信が完了するまで、この処理は続きます。

もし私の考えが正しければ、メールを無効にした後、該当のテーブルからメールを削除できます。ただし、次回の要約メール配信時に同じ現象が再発する可能性があります。

「いいね!」 1

はい、しかしこれはすでに3日間続いています。他のすべてのメール(例えば登録メールなど)はもはや配信されていません。コミュニティは機能していますが、すべてのメール送信は機能していません。
非常に類似した問題を見つけました - https://meta.discourse.org/t/extreme-memory-usage-due-to-bad-mail-credentials/120080。つまり、これは何か巧妙なバグのようです。
これを止めるために私が発見した唯一の方法は、SMTPプロバイダーの認証トークンを削除することでした。Discourseは数百のエラーを表示し始め、その後で負荷が低下しました。トークンを復元したところ、今はすべて正常に見えるようです。

「いいね!」 1

メールの認証情報が間違っていましたか?

@codinghorror 問題の根本原因を見つけました。メールプロバイダーが当社のアカウントの検証済みホストレコードを(彼らなりの愚かな理由で)削除しました。このホストレコードは、メールの「from」フィールドに当社のホストを指定するために使用されていました。そのため、彼らがそれを削除した後、Discourse が無限ループに陥りました。このケースにおいて Discourse のフローにもバグがあると思います。エラーを報告し、1 コアを 100% 使用して読み込み続けるのを停止すべきだからです。

したがって、アカウント自体は正しいです。ただし、メール送信時にメールプロバイダーが「送信ホストが不正」などのエラーを返しており、このフローが問題を引き起こしています。

「いいね!」 2

同意します。これは望ましくない状態であり、より適切に対処すべきです。

「いいね!」 1

もうすべて通常通りになりましたか?

はい。メールの認証情報を変更した後です。

「いいね!」 1