इसलिए इससे पहले कि आप किसी विशेष क्लाउड में बहुत समय और ऊर्जा निवेश करें, उस क्लाउड पर MongoDB की समग्र प्रदर्शन विशेषताओं को समझना महत्वपूर्ण है। हमने इस जानकारी की तलाश की और यह नहीं मिली - इसलिए हमने अपनी प्रदर्शन श्रृंखला के हिस्से के रूप में इसे आपके लिए एक साथ रखने का निर्णय लिया।
बेंचमार्क रिग
हमने इस परीक्षण के लिए AWS, Azure और DigitalOcean की तुलना करने का निर्णय लिया। विन्यास के दो अलग-अलग सेट चुने गए थे। नीचे दी गई तालिका मशीन कॉन्फ़िगरेशन को सारांशित करती है:
प्रदाता | क्षेत्र | ScaleGrid Medium* (Cores/RAM/Disk/Prov IOPS) | स्केलग्रिड बड़ा* (कोर/रैम/डिस्क/प्रोव आईओपीएस) |
AWS | अमेरिका पूर्व | 1/3.75GB/60GB/300 | 2/7.5GB/120GB/500 |
Azure | पूर्वी अमेरिका | 2/3.5GB/60GB/2000 तक | 4/7GB/120GB/4000 तक |
DigitalOcean | न्यूयॉर्क 3 | 2/4GB/25GB/SSD** | 4/8GB/35GB/SSD** |
* विवरण मशीन कॉन्फ़िगरेशन के लिए "MongoDB होस्टिंग" के अंतर्गत यहां देखें।
** DigitalOcean ने सीधे SSD को जोड़ा है।
बेंचमार्क प्रदर्शन परीक्षण YCSB वर्कलोड ए (अपडेट हैवी वर्कलोड) का उपयोग करके चलाए गए थे। हमने पिछले महीने एक बहुत विस्तृत पोस्ट में YCSB, इसे स्थापित करने और इसके कार्यभार के बारे में बात की थी।
- सभी बेंचमार्क परीक्षण एक स्टैंडअलोन कॉन्फ़िगरेशन में किए गए थे
- दोनों कॉन्फ़िगरेशन के लिए, 5 मिलियन रिकॉर्ड सम्मिलित किए गए सर्वर लोड के विभिन्न स्तरों के साथ (क्लाइंट थ्रेड्स की संख्या के आधार पर)।
- मध्यम कॉन्फ़िगरेशन के लिए, तब वर्कलोड ए को डिफ़ॉल्ट मानों (50% अपडेट, 50% रीड) के साथ ऑपरेशन काउंट ऑफ़ 5 मिलियन के साथ निष्पादित किया गया था। सर्वर लोड के विभिन्न स्तरों पर।
- बड़े कॉन्फ़िगरेशन के लिए, फिर वर्कलोड ए को डिफ़ॉल्ट मानों (50% अपडेट, 50% रीड) के साथ 10 मिलियन की ऑपरेशन गणना के साथ निष्पादित किया गया था। सर्वर लोड के विभिन्न स्तरों पर।
परिणाम
हम अद्यतन भारी कार्यभार के तहत सम्मिलित प्रदर्शन और थ्रूपुट/विलंबता विशेषताओं के आधार पर परिणामों पर चर्चा करेंगे।
प्रदर्शन सम्मिलित करें
मध्यम उदाहरण
मध्यम कॉन्फ़िगरेशन पर 5M रिकॉर्ड प्रविष्टि के लिए थ्रूपुट/विलंबता विशेषताएँ:
बड़े उदाहरण
बड़े कॉन्फ़िगरेशन पर 5M रिकॉर्ड प्रविष्टि के लिए थ्रूपुट/विलंबता विशेषताएँ:
प्रदर्शन अपडेट करें
मध्यम उदाहरण
मध्यम विन्यास पर 5M लिखने/अद्यतन संचालन के लिए थ्रूपुट/विलंबता विशेषताएं:
परीक्षण केवल DigitalOcean के लिए 32 थ्रेड्स के साथ चलाया गया था। AWS और Azure 16 थ्रेड्स पर फ्लैट लाइनिंग थे। हालांकि, DigitalOcean 32 थ्रेड तक रैखिक रूप से स्केलिंग का आभास देता है।
बड़े उदाहरण
बड़े कॉन्फ़िगरेशन पर 10M राइट/अपडेट संचालन के लिए थ्रूपुट/विलंबता विशेषताएँ:
समग्र विश्लेषण
- उम्मीद के मुताबिक, DigitalOcean पर MongoDB में लगातार उच्च थ्रूपुट/कम लेटेंसी विशेषताएँ होती हैं और इंसर्ट चरण के दौरान दूसरों को पीछे छोड़ देती हैं, अपने स्थानीय SSD ड्राइव से अधिकतम रस निकालती हैं। दिलचस्प बात यह है कि, भले ही यह रीड/अपडेट चरण के दौरान बहुत अच्छी तरह से चला जाता है, अन्य प्रदाता इसे काफी प्रतिस्पर्धा देते हैं, खासकर जब सर्वर लोड बढ़ता है। स्पष्ट रूप से AWS/Azure बहुत अधिक थ्रूपुट नेटवर्क स्टोरेज का उपयोग कर रहे हैं।
- AWS डिस्क से बेहतर प्रदर्शन प्राप्त करने के लिए, उपयोगकर्ता बड़े डिस्क आकार का उपयोग कर सकता है या अधिक प्रावधानित IOPS आवंटित कर सकता है।
- मध्यम उदाहरणों पर, Azure पर MongoDB लगातार AWS की तुलना में बेहतर प्रदर्शन करता है, दोनों डालने के दौरान और फिर चरणों को अपडेट/पढ़ने के दौरान। यह आश्चर्य की बात थी। हार्डवेयर काफी समान रूप से मेल खाता है। बड़े मामलों में, AWS का प्रदर्शन Azure की तुलना में स्पष्ट रूप से बेहतर है।
- AWS और Azure दोनों ही लेटेंसी में बहुत अच्छी तरह से ख़राब हो जाते हैं क्योंकि लोड बढ़ जाता है। ऐसा लगता है कि Azure में एक अच्छा विलंबता अवक्रमण वक्र है।
- AWS प्रदर्शन पर MongoDB का एक और दिलचस्प पहलू यह है कि यह कैसे "फ्लैट-लाइनेड" है:लॉग स्केल पर भी इनायत से नीचा दिखता है।
- लेटेंसी नंबरों के आधार पर, लोड के दृष्टिकोण से, मीडियम और लार्ज इंस्टेंस के लिए, क्रमशः 8 और 16 थ्रेड्स के लिए स्वीट स्पॉट जैसा दिखता है।