Échec du remappage en raison d'un interblocage

J’ai une base de données volumineuse (9,2 millions de publications) avec de nombreux mégas-sujets (certains contenant plus de 150 000 publications !). Lorsque j’essaie de restaurer sur un autre serveur, je rencontre le problème suivant lors de la réaffectation vers un nouveau nom d’hôte :

Restauration des fichiers téléchargés, cela peut prendre un certain temps...                                                   
Optimisation des icônes du site...                                                                                      
Les publications seront retravaillées par un tâche en arrière-plan dans Sidekiq. Des images manquantes apparaîtront jusqu'à ce que cela soit terminé.
Vous pouvez accélérer le processus en exécutant manuellement "rake posts:rebake_uncooked_posts"  
EXCEPTION : ERREUR : deadlock détecté                                              
DÉTAIL : Le processus 960 attend un ShareLock sur la transaction 4765 ; bloqué par le processus 2184.                   
Le processus 2184 attend un ShareLock sur la transaction 4915 ; bloqué par le processus 960.                                    CONSEIL : Consultez le journal du serveur pour les détails de la requête.
CONTEXTE : lors de la mise à jour du tuple (566294,13) dans la relation "posts"                                         

Y a-t-il une solution pour résoudre ce deadlock ?

Ceci s’est produit sur un droplet standard de 8 Go.

Lors d’une tentative de rebake, j’ai rencontré un problème similaire sur ce site, même avec un serveur de base de données assez rapide disposant de 16 Go de RAM et un serveur web séparé avec 16 Go de RAM. Les deux servaient également quelques autres sites assez petits et à faible volume.

Est-il probable que cela soit dû aux mégas-sujets ? Existe-t-il une solution autre que leur division en sujets plus petits ?

C’est beaucoup plus facile si vous arrêtez les processus web et sidekiq pendant le remappage, afin qu’aucune concurrence pour les verrous ne se produise.

Merci beaucoup ! Cela a réglé le problème. Et, évident une fois que vous l’avez suggéré.

Désolé de soulever ce point, nous rencontrons le même problème.

Comment arrêter les processus web et Sidekiq ?

Puisque vous utilisez un environnement de développement, il vous suffit d’appuyer sur Control-C.

Comment devons-nous l’arrêter dans Docker ?

  sv stop unicorn
  sv stop sidekiq

unicorn est bien le serveur web, non ?