Nie jest to powszechne, aby zobaczyć tego rodzaju problemy, ale widziałem, że występują sporadycznie.
Najlepszym działaniem zaradczym, jakie należy podjąć w tym miejscu, jest wycofanie głównego fragmentu elementu TO, do którego się odwołuje, co spowoduje wyczyszczenie usunięcia tła. Wątki usuwania istnieją tylko w bieżącym głównym (zostaną zreplikowane z tego głównego przez oplog
jak są przetwarzane). Kiedy go zmniejszysz, stanie się drugorzędnym, wątki nie będą już mogły pisać i otrzymasz nowy podstawowy bez oczekujących na usunięcie. Możesz chcieć zrestartować poprzednią podstawową po obniżeniu, aby usunąć stare kursory, ale zwykle nie jest to pilne.
Gdy to zrobisz, pozostanie duża liczba osieroconych dokumentów, którymi mogą być adresy z cleanUpOrphaned
polecenie
które polecam biegać w porach o małym natężeniu ruchu (jeśli masz takie czasy).
Dla odniesienia, jeśli jest to powtarzający się problem, prawdopodobnie podstawowe mają problemy z obciążeniem i aby uniknąć kolejkowania usunięć, możesz ustawić _waitForDelete
opcja
dla balancera na true (domyślnie false) w następujący sposób:
use config
db.settings.update(
{ "_id" : "balancer" },
{ $set : { "_waitForDelete" : true } },
{ upsert : true }
)
Oznacza to, że każda migracja jest wolniejsza (być może znacznie), ale nie spowoduje kumulacji usuwania w tle.