Mongo replikacja – testy

logo mongodbW końcu się zabrałem za napisanie notki na blogu :)

Jakiś czas temu potrzebowaliśmy zrobić testy wydajnościowe mongodb. Muszę powiedzieć, że wyniki wyszły zadowalająco :)

Dane które były wrzucane do bazy miały ok 76kB / wiersz. Dla wyjaśnienia:

1 połączenie to 100 000 operacji (jakie i w jakiej ilości – opisane jest w drugiej tabeli). Wszystkie operacje były wykonywane po kluczach głównych lub innych zdefiniowanych.

Mongo - czasy

Ilość równoległych połączeń Czas [sek] (SSD) Czas [sek] (SAS) Czas na połączenie [sek] (SSD) Czas na połączenie [sek] (SAS)
1 2,05 2,76 2,05 2,76
100 101,42 133,46 1,01 1,34
200 213,28 293,36 1,07 1,47
300 324,51 440,45 1,08 1,47
400 444,32 621,17 1,11 1,55
500 559,72 788,71 1,12 1,58
600 729,28 1 040,53 1,22 1,73
700 851,77 1 237,30 1,22 1,77
800 1 024,33 1 462,43 1,28 1,83
900 1 146,72 1 732,19 1,27 1,93
1000 1 306,4 1 998,83 1,31 2,00

Mongo - ilość operacji w jednym połączeniu

Typ % Ilość
Insert (+status) 6,5% 6 500
Update (+status) 3% 3 000
Delete (+status) 3% 3 000
Select 87,5% 87 500
Razem 100% 100 000


Maszyny na których przeprowadzane były testy (SSD i SAS miały identyczne konfiguracje jako master i slave)

  • SSD
    • Dual Quad Core
    • 12GB ram
    • 4x SSD 50GB (RAID 10)
    • 1gbps LAN
  • SAS
    • Dual Quad Core
    • 12GB ram
    • 6x SSD 143GB 10k rpm (RAID 10)
    • 1gbps LAN
  • Klient
    • Dual Quad Core
    • 12GB ram
    • 6x SSD 143GB 10k rpm (RAID 10)
    • 1gbps LAN
I jeszcze dwa wykresiki (wieczorem zrobię je jeszcze raz – będą lepiej wyglądać):

Jak widać wydajność rośnie liniowo :) Dodatkowo na master i slave są identyczne dane (jest chyba sekundowy lag), ale jest to zasługą tego, że inserty i reszta lecą z sprawdzaniem statusu. Zapuściłem jeszcze test dla 35 000 równoległych połączeń – baza zdechła… Ale była to wina tego, że system nie wytrzymał ilości połączeń i maszyny zdechły :)
Jak ma ktoś pytania – piszcie w komentarzu.
btw, nie mam już dostępu do tych maszyn, więc ciężko ze zrobieniem dodatkowych testów :(