私はDiscourseインスタンスの管理者ですが、AWS EC2インスタンスのシステム管理者ではありません。3週間前、セキュリティ上の理由からAWS SESのメールサービスが停止しました。クラウドスタッフは現在になってようやくそれを修正しています。そのため、3週間にわたり、当サイトはメールを送信できず、40,000件以上のジョブ失敗とそれに伴う再試行が発生しています。私はWeb開発者ではないため、Sidekiqページに何が書かれているのか理解できませんが、メールサーバーがオンラインに戻った際に、失敗したジョブが再試行され、3週間受信できなかった古いメールが人々に洪水のように送られるのではないかと心配しています。そうなりますか?Discourseは、メールサーバーがオフラインだったために送信できなかったメールを再送信しますか?もしそうなら、サイトからのメールで人々を洪水のようにしないために、それを無効にする方法はありますか?粒度を調整することはできますか?例えば、特定の日付以降の新しいアクティビティを示すメールのみを送信するなどです。
あなたの恐怖は正当なものです。
これを修正するためにどのくらいの時間があるかわかりません。1つの解決策は、メールを受け付けるが破棄するだけのメールサーバーをセットアップおよび設定することです。
これを解決するための「本当に」迅速で(非常に)ダーティな方法は、redis-cliを使用してflushdbコマンドを発行することです。これにより、キューに入れられたすべてのジョブが削除されます。また、すべてのユーザーがログアウトされます。次に、Discourseを再起動して、すべての通常のジョブが再度実行されるようにします。
全ユーザーのログアウトは、決して望ましいことではありません… メールサーバーは本日中に修正されるはずですが、システム管理者がメールサーバーをすべて破棄するように設定する柔軟性があるかどうかはわかりません。
Sidekiq の「retries」ページの最下部に「kill all」と「delete all」ボタンが表示されています(添付画像参照)。これは何か役に立つものでしょうか?
特定のタイプのキューからすべてのジョブをパージすれば、うまくいくはずです。
(これをどうやるか、また掘り起こす必要があります…)
確信していると思います。修正に3週間かかりました。
システム管理者に、sidekiqからジョブを削除し、メールジョブを削除する方法をGoogleで検索するように依頼できます。それが最善の策だと思います。
自分でアクセスできないか、誰かを雇って手伝ってもらうこともできないと推測します。実行中のec2にsshで接続できますか?Webインターフェースから50,000すべてを削除するように努めることができます。
サイドキックページは、キル/削除オプション付きで機能しました。EC2システム管理者は必要なく、フォーラムの管理者がサイドキックページから操作するだけで、キューに入れられたすべてのメールを削除できました。
メールサーバーがオンラインに戻った後、キューに入れられたメールは再送信されませんでした。



