Het is niet gebruikelijk om dit soort problemen te zien, maar ik heb het sporadisch gezien.
De beste corrigerende actie die u hier kunt nemen, is om de primaire van de TO-shard waarnaar wordt verwezen, te verlagen, waardoor de verwijderingen op de achtergrond worden gewist. De verwijderthreads bestaan alleen op de huidige primaire (ze zullen worden gerepliceerd van die primaire via de oplog
zoals ze worden verwerkt). Wanneer je het verlaat, wordt het een secundair, kunnen de threads niet langer schrijven en krijg je een nieuwe primaire zonder wachtende verwijderingen. Het kan zijn dat je de voormalige primaire opnieuw wilt starten na de stap naar beneden om oude cursors te verwijderen, maar dit is meestal niet urgent.
Zodra u dit doet, houdt u een groot aantal verweesde documenten over, die adressen kunnen zijn met de cleanUpOrphaned
commando
die ik zou aanraden om op tijden met weinig verkeer te werken (als je zulke tijden hebt).
Ter referentie, als dit een terugkerend probleem is, dan is het waarschijnlijk dat de voorverkiezingen een beetje worstelen met het laden, en om de wachtrij voor verwijderingen te voorkomen, kunt u de _waitForDelete
optie
voor de balancer op true (standaard onwaar) als volgt:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
Dit betekent dat elke migratie langzamer gaat (misschien aanzienlijk) maar er niet voor zorgt dat de verwijderingen op de achtergrond zich ophopen.