単一のアプリケーションでマルチサイトを実行している複数のDiscourseサイトを運用しています。最近、大規模なユーザーインポート(6サイト全体で数十万人のユーザー)を行いました。インポート後、Sidekiqのバックグラウンドジョブ処理が非常に遅くなっています。Sidekiqダッシュボードには大量のバックログが表示され、ジョブのクリア率が予想よりもはるかに低くなっています。
環境の詳細:
- VMは16CPU / 16GB RAMにアップグレードされました。
- しかし、Sidekiqインターフェースでは、スレッドが5つしか表示されず、リソースのごく一部しか使用されていないようです。
- メインのインポートキュー(マルチサイトの親として「nursingjobs」)はすべての子サイトのジョブを処理していますが、ジョブのスループットは非常に低いです。
- サーバーメトリクス:CPUは時々80〜90%、メモリは約6.7 / 7.2GBです。
求めていること:
- インポート後の大規模なバックログをクリアするために、Sidekiq /バックグラウンドジョブ処理を高速化する。
- Discourseが利用可能なすべてのリソース(CPU / RAM)を活用していることを確認する。
- 調整が必要なスレッド/プロセスの制限があるかどうかを理解する。
質問:
- インポート後の高スループットのために、Sidekiq / Discourseを構成する最良の方法は何ですか?
- 大規模なマルチコアシステムでのUNICORN_SIDEKIQSおよびDISCOURSE_SIDEKIQ_WORKERSの推奨設定は何ですか?
- Sidekiqの同時実行数を増やす際に、DBプールエラーを回避するために調整すべきPostgresまたはその他のapp.yml設定はありますか?
- インポート後に大規模なSidekiqバックログを迅速かつ安全にクリアするためのベストプラクティスはありますか?
Sidekiqの統計/スクリーンショットは、必要であれば利用可能です!
