Jadi sebelum Anda menginvestasikan banyak waktu dan energi ke cloud tertentu, penting untuk memahami karakteristik kinerja keseluruhan MongoDB di cloud itu. Kami mencari informasi ini dan tidak menemukannya – jadi kami memutuskan untuk mengumpulkannya untuk Anda sebagai bagian dari rangkaian pertunjukan kami.
Rig Tolok Ukur
Kami memutuskan untuk membandingkan AWS, Azure, dan DigitalOcean untuk pengujian ini. Dua set konfigurasi yang berbeda dipilih. Tabel di bawah ini merangkum konfigurasi mesin:
Penyedia | Wilayah | ScaleGrid Medium* (Cores/RAM/Disk/Prov IOPS) | ScaleGrid Large* (Cores/RAM/Disk/Prov IOPS) |
AWS | AS Timur | 1/3.75GB/60GB/300 | 2/7.5GB/120GB/500 |
Azure | AS Timur | 2/3.5GB/60GB/hingga 2000 | 4/7GB/120GB/hingga 4000 |
DigitalOcean | New York 3 | 2/4GB/25GB/SSD** | 4/8GB/35GB/SSD** |
* Lihat di sini di bagian “MongoDB Hosting” untuk detail konfigurasi mesin.
** DigitalOcean telah memasang SSD secara langsung.
Uji performa benchmark dijalankan menggunakan YCSB Workload A (memperbarui beban kerja berat). Kami berbicara tentang YCSB, menyiapkannya dan beban kerjanya dalam posting yang sangat rinci bulan lalu.
- Semua pengujian benchmark dilakukan dalam konfigurasi mandiri
- Untuk kedua konfigurasi, 5 juta catatan dimasukkan dengan berbagai tingkat beban server (berdasarkan jumlah utas klien).
- Untuk konfigurasi Medium, maka Workload A dijalankan dengan nilai default (50% Update, 50% Read) dengan jumlah operasi 5 juta pada berbagai tingkat beban server.
- Untuk konfigurasi Large, maka Workload A dijalankan dengan nilai default (50% Update, 50% Read) dengan jumlah operasi 10 juta pada berbagai tingkat beban server.
Hasil
Kami akan membahas hasil berdasarkan kinerja insert dan karakteristik throughput/latency di bawah update beban kerja berat.
Sisipkan Performa
Instance Sedang
Karakteristik Throughput/latensi untuk penyisipan record 5M pada konfigurasi Medium:
Instance Besar
Karakteristik Throughput/latensi untuk penyisipan record 5M pada konfigurasi Besar:
Perbarui Performa
Instance Sedang
Karakteristik Throughput/latensi untuk operasi penulisan/pembaruan 5 juta pada konfigurasi medium:
Tes dijalankan dengan 32 utas untuk DigitalOcean saja. AWS dan Azure adalah lapisan datar pada 16 utas. Namun, DigitalOcean memberikan kesan penskalaan linier hingga 32 utas.
Instance Besar
Karakteristik Throughput/latensi untuk operasi tulis/pembaruan 10 juta pada konfigurasi Besar:
Analisis Keseluruhan
- Seperti yang diharapkan, MongoDB di DigitalOcean memiliki karakteristik throughput tinggi/latensi rendah secara konsisten dan mengalahkan yang lain selama fase penyisipan, mengekstrak jus maksimum dari drive SSD lokalnya. Menariknya, meskipun berjalan dengan sangat baik selama fase baca/perbarui, penyedia lain memberikan sedikit persaingan yang adil, terutama ketika beban server meningkat. Jelas AWS/Azure menggunakan penyimpanan jaringan throughput yang jauh lebih tinggi.
- Untuk mendapatkan kinerja yang lebih baik dari disk AWS, pengguna dapat menggunakan ukuran disk yang lebih besar atau mengalokasikan lebih banyak IOPS yang disediakan.
- Pada instans Medium, MongoDB di Azure tampaknya melakukan jauh lebih baik daripada AWS secara konsisten, baik selama fase penyisipan dan kemudian pembaruan/pembacaan. Ini mengejutkan. Perangkat kerasnya cukup seimbang. Pada instans Besar, kinerja AWS jauh lebih baik daripada Azure.
- AWS dan Azure mengalami penurunan latensi dengan cukup baik seiring dengan peningkatan beban. Azure tampaknya memiliki kurva degradasi latensi yang cukup baik.
- Aspek lain yang menarik dari kinerja MongoDB pada AWS adalah seberapa "flat-lined" itu:Tampaknya menurun dengan anggun bahkan pada skala log.
- Berdasarkan angka latensi, terlihat seperti sweet spot, dari sudut pandang beban, untuk instans Sedang dan Besar masing-masing adalah 8 dan 16 utas.