Dlatego zanim zainwestujesz dużo czasu i energii w konkretną chmurę, ważne jest, aby zrozumieć ogólną charakterystykę wydajności MongoDB w tej chmurze. Szukaliśmy tych informacji i nie znaleźliśmy ich – dlatego postanowiliśmy zebrać je dla Ciebie w ramach naszej serii wydajności.
Wiertnica wzorcowa
W tym teście postanowiliśmy porównać AWS, Azure i DigitalOcean. Wybrano dwa różne zestawy konfiguracji. Poniższa tabela podsumowuje konfiguracje maszyn:
Dostawca | Region | ScaleGrid Medium* (Rdzenie/RAM/Dysk/Prov IOPS) | ScaleGrid Large* (rdzenie/RAM/dysk/Prov IOPS) |
AWS | Wschodnie USA | 1/3,75 GB/60 GB/300 | 2/7,5 GB/120 GB/500 |
Lazurowy | Wschodnie USA | 2/3,5 GB/60 GB/do 2000 | 4/7 GB/120 GB/do 4000 |
Cyfrowy ocean | Nowy Jork 3 | 2/4 GB/25 GB/SSD** | 4/8 GB/35 GB/SSD** |
* Szczegółowe informacje na temat konfiguracji maszyn znajdziesz w sekcji „MongoDB Hosting”.
** DigitalOcean ma bezpośrednio podłączone dyski SSD.
Testy wydajności porównawczej zostały przeprowadzone przy użyciu YCSB Workload A (aktualizacja dużego obciążenia). Rozmawialiśmy o YCSB, jego konfiguracji i obciążeniu pracą w bardzo szczegółowym poście w zeszłym miesiącu.
- Wszystkie testy porównawcze zostały przeprowadzone w samodzielnej konfiguracji
- Dla obie konfiguracji Wstawiono 5 milionów rekordów z różnymi poziomami obciążenia serwera (na podstawie liczby wątków klienta).
- W przypadku konfiguracji Medium, obciążenie A zostało wykonane z wartościami domyślnymi (50% aktualizacja, 50% odczyt) z liczbą operacji 5 milionów na różnych poziomach obciążenia serwera.
- W przypadku konfiguracji Large, obciążenie A zostało wykonane z wartościami domyślnymi (50% aktualizacja, 50% odczyt) z liczbą operacji 10 milionów na różnych poziomach obciążenia serwera.
Wyniki
Omówimy wyniki na podstawie wydajności wstawiania i charakterystyk przepustowości/opóźnień w ramach aktualizacji dużego obciążenia.
Wstaw wydajność
Średnie instancje
Charakterystyka przepustowości/opóźnień dla wstawiania rekordów 5M w konfiguracji Medium:
Duże instancje
Charakterystyka przepustowości/opóźnień dla wstawiania rekordów 5M w konfiguracji Large:
Aktualizuj wydajność
Średnie instancje
Charakterystyka przepustowości/opóźnień dla operacji zapisu/aktualizacji 5M w konfiguracji średniej:
Test został uruchomiony z 32 wątkami tylko dla DigitalOcean. AWS i Azure to płaskie okładziny o 16 wątkach. Jednak DigitalOcean sprawia wrażenie skalowania liniowego do 32 wątków.
Duże instancje
Charakterystyka przepustowości/opóźnień dla operacji zapisu/aktualizacji 10M w konfiguracji Large:
Ogólna analiza
- Zgodnie z oczekiwaniami, MongoDB na DigitalOcean ma niezmiennie wysoką przepustowość i niskie opóźnienia przez cały czas i bije inne ręce podczas fazy wstawiania, wydobywając maksimum soku z lokalnych dysków SSD. Co ciekawe, nawet jeśli idzie bardzo dobrze w fazie odczytu/aktualizacji, inni dostawcy zapewniają mu sporą konkurencję, zwłaszcza gdy wzrasta obciążenie serwera. Najwyraźniej AWS/Azure używa znacznie większej przepustowości sieciowej pamięci masowej.
- Aby uzyskać lepszą wydajność z dysku AWS, użytkownik może użyć większych rozmiarów dysków lub przydzielić więcej aprowizowanych operacji IOPS.
- Na średnich instancjach MongoDB na platformie Azure wydaje się działać znacznie lepiej niż AWS, zarówno podczas faz wstawiania, jak i aktualizacji/odczytu. To było zaskakujące. Sprzęt jest dość wyrównany. W dużych instancjach wydajność AWS jest znacznie lepsza niż Azure.
- Zarówno AWS, jak i Azure degradują się pod względem opóźnień wraz ze wzrostem obciążenia. Wydaje się, że platforma Azure ma dość dobrą krzywą degradacji opóźnień.
- Kolejnym interesującym aspektem wydajności MongoDB na AWS jest to, jak bardzo jest „płaska”:wydaje się, że spada z gracją nawet w skali logarytmicznej.
- Na podstawie liczb opóźnień wygląda na to, że optymalny punkt z punktu widzenia obciążenia dla instancji Medium i Large to odpowiednio 8 i 16 wątków.