MongoDB ma globalną blokadę zapisu . Oznacza to, że tylko jedna z Twoich aktualizacji może być kontynuowana na raz.
db.serverStatus() polecenie może pomóc w zdiagnozowaniu problemów z globalną blokadą zapisu.
Oto kilka rzeczy, które możesz wypróbować:
1) Upewnij się, że używasz mongodb 2.0. Ma lepszą współbieżność niż starsze wersje. 2.2 będzie miał jeszcze lepszą współbieżność.
2) Ustaw w kolejce swoje zapisy, aby były asynchroniczne, i wykonuj je wszystkie za pomocą jednego wątku. Może to pomóc w przypadku współbieżności, ponieważ zazwyczaj tylko jeden wątek będzie jednocześnie próbował użyć globalnej blokady zapisu.
3) Jeśli używasz najnowszej wersji i nie możesz pisać w jednym wątku, rozważ sharding. Sharding to znacznie więcej niż tylko rozmiar; jest co najmniej tak samo ważne dla współbieżności zapisu. Jeśli shardujesz, każdy segment będzie działał we własnym procesie z własną globalną blokadą zapisu. Umożliwi to całemu systemowi przetwarzanie większej liczby zapisów.