Než tedy investujete spoustu času a energie do konkrétního cloudu, je důležité porozumět celkovým charakteristikám výkonu MongoDB v tomto cloudu. Hledali jsme tyto informace a nenašli jsme je – proto jsme se rozhodli je pro vás dát dohromady v rámci našeho seriálu představení.
Benchmark Rig
Rozhodli jsme se pro tento test porovnat AWS, Azure a DigitalOcean. Byly vybrány dvě různé sady konfigurací. Níže uvedená tabulka shrnuje konfigurace zařízení:
Poskytovatel | Region | Střední ScaleGrid* (jádra/RAM/Disk/Prov IOPS) | ScaleGrid Large* (jádra/RAM/Disk/Prov IOPS) |
AWS | východ USA | 1/3,75 GB/60 GB/300 | 2/7,5 GB/120 GB/500 |
Azure | Východ USA | 2/3,5 GB/60 GB/až 2000 | 4/7 GB/120 GB/až 4 000 |
DigitalOcean | New York 3 | 2/4 GB/25 GB/SSD** | 4/8 GB/35 GB/SSD** |
* Podrobnosti o konfiguraci stroje naleznete zde v části „Hostování MongoDB“.
** DigitalOcean má přímo připojené SSD.
Srovnávací testy výkonu byly provedeny pomocí YCSB Workload A (aktualizace velkého pracovního zatížení). Minulý měsíc jsme mluvili o YCSB, jeho nastavení a jeho pracovní zátěži ve velmi podrobném příspěvku.
- Všechny srovnávací testy byly provedeny v samostatné konfiguraci
- Pro obě konfigurace Bylo vloženo 5 milionů záznamů s různými úrovněmi zatížení serveru (na základě počtu klientských vláken).
- V případě střední konfigurace byla pracovní zátěž A provedena s výchozími hodnotami (50 % aktualizace, 50 % čtení) s počtem operací 5 milionů při různých úrovních zatížení serveru.
- V případě velké konfigurace byla pracovní zátěž A provedena s výchozími hodnotami (50 % aktualizace, 50 % čtení) s počtem operací 10 milionů při různých úrovních zatížení serveru.
Výsledky
Budeme diskutovat o výsledcích založených na výkonu vkládání a charakteristikách propustnosti/latence při velkém vytížení aktualizací.
Výkon vložení
Střední instance
Charakteristiky propustnosti/latence pro vkládání 5M záznamu v konfiguraci Medium:
Velké instance
Charakteristiky propustnosti/latence pro vkládání 5M záznamu ve velké konfiguraci:
Aktualizovat výkon
Střední instance
Charakteristiky propustnosti/latence pro operace zápisu/aktualizace 5M na konfiguraci média:
Test byl spuštěn s 32 vlákny pouze pro DigitalOcean. AWS a Azure byly ploché obložení se 16 vlákny. DigitalOcean však působí dojmem lineárního škálování až do 32 vláken.
Velké instance
Charakteristiky propustnosti/latence pro operace zápisu/aktualizace 10 milionů ve velké konfiguraci:
Celková analýza
- Jak se očekávalo, MongoDB na DigitalOcean má trvale vysokou propustnost/nízkou latenci po celou dobu a ve fázi vkládání poráží ostatní a získává maximum šťávy z místních SSD disků. Zajímavé je, že i když to jde ve fázi čtení/aktualizace velmi dobře, ostatní poskytovatelé mu dávají slušnou konkurenci, zvláště když se zvyšuje zatížení serveru. Je zřejmé, že AWS/Azure používají síťové úložiště s mnohem vyšší propustností.
- Aby uživatel dosáhl lepšího výkonu disku AWS, může použít větší velikosti disku nebo přidělit více zřízených IOPS.
- Na středních instancích se zdá, že MongoDB v Azure funguje mnohem lépe než AWS konzistentně, a to jak během fáze vkládání, tak i fáze aktualizace/čtení. To bylo překvapivé. Hardware je docela vyrovnaný. Ve velkých instancích je výkon AWS výrazně lepší než Azure.
- Jak AWS, tak Azure se s narůstající zátěží snižují latence docela dobře. Zdá se, že Azure má docela dobrou křivku degradace latence.
- Dalším zajímavým aspektem výkonu MongoDB na celém výkonu AWS je, jak je „plochý“:Zdá se, že ladně degraduje i na logaritmickém měřítku.
- Na základě čísel latence to vypadá, že z hlediska zatížení je pro střední a velké instance ideální 8 a 16 vláken.