デッドロックのため、再マッピングに失敗しました

920 万件の投稿を含む大規模なデータベース(一部は 15 万件を超えるメガトピックもあります)を所持しています。別のサーバーへのリストアを試みると、新しいホスト名へのリマップ処理中に以下のようなエラーが発生します。

アップロードの復元中、時間がかかる場合があります...
サイトアイコンの最適化中...
投稿は Sidekiq のバックグラウンドジョブによって再焼き直しされます。完了するまで、画像が表示されないことがあります。
このプロセスを早めるには、手動で「rake posts:rebake_uncooked_posts」を実行してください。
例外:エラー:デッドロックが検出されました
詳細:プロセス 960 がトランザクション 4765 上の ShareLock を待機中;プロセス 2184 によってブロックされています。
プロセス 2184 がトランザクション 4915 上の ShareLock を待機中;プロセス 960 によってブロックされています。
ヒント:クエリの詳細についてはサーバーログを参照してください。
コンテキスト:リレーション「posts」内のタプル (566294,13) の更新中

このデッドロックを解決するために何かできることはありますか?

これは 8GB のスタンダードドロップレットでの出来事でした。

再焼き直しを試みると、16GB の RAM を持つ比較的高速なデータベースサーバーと、別途 16GB の RAM を持つ Web サーバーを備えたこのサイトでも同様の問題が発生しました。どちらも他の比較的小さく低トラフィックのサイトも提供していました。

これはメガトピックが原因なのでしょうか?それらをより小さなトピックに分割する以外の解決策はありますか?

リマッピング中は、Web プロセスと Sidekiq プロセスを停止しておくと、競合するロックがなくなるため、はるかに簡単になります。

本当にありがとうございます!これで解決しました。あなたが提案してくださったおかげで、とても obvious(当たり前)なことに気づきました。

お手数をおかけしますが、同じ問題に遭遇しました。

Web プロセスと Sidekiq プロセスを停止する方法はどのようにすればよいでしょうか?

開発環境を使用しているため、Control-Cを押すだけで済みます。

Docker で停止させるには、どのようにすればよいでしょうか?

sv stop unicorn
sv stop sidekiq

Unicorn は Web ですね?