MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB क्लाइंट टाइमआउट विकल्पों को समझना

MongoDB ड्राइवर उपयोग के दौरान होने वाली विभिन्न नेटवर्क टाइमआउट त्रुटियों को संभालने के लिए Mongo क्लाइंट के लिए कई विकल्प प्रदान करते हैं। कुछ मामलों में, इन विकल्पों के लिए डिफ़ॉल्ट मान आपके उपयोग के मामले में फिट नहीं हो सकते हैं, इसलिए आपके एप्लिकेशन प्रवाह में अप्रत्याशित हैंग होने से बचने और प्रदर्शन में सुधार करने के लिए विभिन्न MongoClient टाइमआउट विकल्पों को समझना महत्वपूर्ण है।

मोंगो -सर्वर चयन, कनेक्शन और सॉकेट के लिए टाइमआउट विकल्पों को कॉन्फ़िगर करना ट्वीट करने के लिए क्लिक करें

एक सार स्तर पर, जब भी आप अनुरोध को जोड़ने, भेजने या प्राप्त करने के लिए MongoClient का उपयोग करते हैं, तो यह आंतरिक रूप से पूर्वनिर्धारित टाइमआउट विकल्पों का उपयोग करके यह तय करता है कि एप्लिकेशन आपके अनुरोध के लिए प्रारंभिक कनेक्शन स्थापना या सर्वर से प्रतिक्रिया के लिए कितनी देर तक प्रतीक्षा करेगा।

विशिष्ट अनुप्रयोग व्यावसायिक तर्क के आधार पर विभिन्न डेटाबेस सर्वरों के साथ सहभागिता कर रहे हैं। उदाहरण के लिए, आपका भुगतान इतिहास एक डेटाबेस क्लस्टर पर हो सकता है और आपका विश्लेषण रिकॉर्ड दूसरे क्लस्टर पर हो सकता है। डिफ़ॉल्ट टाइम-आउट नेटवर्क त्रुटि होने पर आपके एप्लिकेशन के व्यवहार को महत्वपूर्ण रूप से प्रभावित कर सकता है। यदि आपका एनालिटिक्स सर्वर डाउन है, तो प्रत्येक ऑपरेशन विफल होने से पहले 30 के डिफ़ॉल्ट की प्रतीक्षा करेगा (जो आप चाहते हैं या नहीं भी हो सकता है)।

सर्वर चयन समयबाह्य

सर्वर चयन समयबाह्य मिलीसेकंड की संख्या है, जो मोंगो चालक किसी त्रुटि को छोड़ने और उठाने से पहले एक ऑपरेशन के लिए एक सर्वर का चयन करने के लिए प्रतीक्षा करेगा।

यह विकल्प अगली पीढ़ी के मोंगो ड्राइवरों के नए संस्करण (जावा में संस्करण 3.2.x+) में पेश किया गया था। प्रत्येक प्रकार के संचालन और उपयोगकर्ता वरीयता के लिए, MongoClient ऑपरेशन निष्पादित करने के लिए चयन एल्गोरिदम का उपयोग कर सर्वर का चयन करता है।

एक स्टैंडअलोन सर्वर पर लिखने के संचालन के लिए, केवल एक सर्वर उपलब्ध है जो चयनित हो जाता है। एक प्रतिकृति सेट या शार्प क्लस्टर में, एक से अधिक सर्वर हो सकते हैं जो किसी ऑपरेशन के लिए उपयोगकर्ता वरीयता मानदंड को भरते हैं।

संभावित परिदृश्य जहां सर्वर चयन समयबाह्य हो सकता है - यदि कोई नेटवर्क डाउन है या प्रतिकृति सेट में प्राथमिक नोड विफलता है।

मोंगो ड्राइवर सर्वर चयन टाइमआउट के डिफ़ॉल्ट मान के रूप में 30s का उपयोग करता है . उपयोग के मामले के आधार पर, हम इस सीमा को बढ़ा या घटा सकते हैं।

कनेक्शन टाइमआउट

कनेक्शन टाइमआउट मिलीसेकंड की संख्या है जो ड्राइवर नए कनेक्शन प्रयास के निरस्त होने से पहले प्रतीक्षा करेगा।

सर्वर के चयन के बाद, क्लाइंट सर्वर के साथ संबंध स्थापित करने का प्रयास करता है।

नेटवर्क इन्फ्रास्ट्रक्चर और सर्वर पर लोड के आधार पर, क्लाइंट को कनेक्शन स्थापना के लिए प्रतीक्षा करनी पड़ सकती है। संभावित परिदृश्य जहां कनेक्शन का समय समाप्त हो सकता है - सर्वर बंद हो जाता है, नेटवर्क समस्याएँ, गलत IP/DNS, पोर्ट नंबर आदि

कनेक्शन टाइमआउट का डिफ़ॉल्ट मान ड्राइवर के संस्करण और भाषा पर निर्भर करता है। मोंगो जावा और रूबी के नवीनतम ड्राइवर संस्करणों में कनेक्शन प्रतिष्ठानों के लिए 10s डिफ़ॉल्ट टाइमआउट है, जबकि NodeJs ड्राइवर के पास कोई टाइमआउट नहीं है।

यदि टाइमआउट बहुत अधिक है, तो आप अपने आवेदन को रोकने का जोखिम उठाते हैं। यदि टाइमआउट बहुत कम है, तो आप बहुत जल्दी हार मान सकते हैं। अपने आवेदन के लिए सही टाइमआउट खोजने के लिए विभिन्न मूल्यों के साथ परीक्षण करना बेहतर है।

सॉकेटटाइमआउट

सॉकेट टाइमआउट, सॉकेट पर भेजे या प्राप्त किए गए मिलीसेकंड की संख्या को टाइमआउट से पहले ले सकता है।

सर्वर के साथ कनेक्शन स्थापित करने के बाद, क्लाइंट सर्वर को एक अनुरोध भेजता है और पहले से स्थापित कनेक्शन का उपयोग करके प्रतिक्रिया प्राप्त करता है। आंतरिक रूप से, कनेक्शन क्लाइंट अनुरोध भेजने के लिए सॉकेट का उपयोग करता है और प्रतिक्रिया प्राप्त करता है

Mongo Java और Nodejs  ड्राइवर के पास 0s का डिफ़ॉल्ट सॉकेट टाइमआउट होता है, जिसका अर्थ मूल रूप से कोई टाइमआउट नहीं होता है . जबकि रूबी 5s सॉकेट टाइमआउट ऑफर करती है। आप इस समयबाह्य की कोई सीमा नहीं रखना चाहते क्योंकि अलग-अलग संचालनों को संचालित होने में परिवर्तनशील समय लगेगा।

आगे की खोज

MongoClient टाइमआउट विकल्प Mongo ड्राइवरों के विभिन्न संस्करणों और भाषाओं पर भिन्न होते हैं। हम आपको अपने डिफ़ॉल्ट टाइमआउट विकल्पों को समझने के लिए अपने ड्राइवर के MongoClient वर्ग के दस्तावेज़ीकरण के माध्यम से जाने के लिए प्रोत्साहित करते हैं। हमने जावा और रूबी में टाइमआउट कॉन्फ़िगरेशन को स्पष्ट करने के लिए नीचे कुछ नमूना कोड प्रदान किए हैं।

MongoDB जावा ड्राइवर

List<MongoCredential> creds = new ArrayList<MongoCredential>();  creds.add(MongoCredential.createCredential(username, DBname, password);

MongoClientOptions.Builder optionsBuilder = MongoClientOptions.builder();

optionsBuilder.connectTimeout(CONNECTION_TIME_OUT_MS);

optionsBuilder.socketTimeout(SOCKET_TIME_OUT_MS);

optionsBuilder.serverSelectionTimeout(SERVER_SELECTION_TIMEOUT_MS);

MongoClientOptions options = optionsBuilder.build();

Mongo m = new MongoClient(new ServerAddress(server , port), creds, options);

MongoDB NodeJs ड्राइवर

var uri =  ‘mongodb://[username:password@]host[:port1]/[database]’;
var options = { server:
               { socketOptions: 
                    { 
                        socketTimeoutMS: SOCKET_TIME_OUT_MS, 
                        connectTimeoutMS: CONNECTION_TIMEOUT_MS 
                    }
                }
              };
MongoClient.connect(uri, options, function(err, db) {
  if(!err) {
    console.log("We are connected");
  }
});

क्या हमें कुछ याद आया? बेझिझक हमें नीचे टिप्पणी में बताएं। इस तरह की और अन्य युक्तियों को प्राप्त करने वाले पहले व्यक्ति बनने के लिए हमारे न्यूज़लेटर के लिए साइन अप करना न भूलें!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. क्या स्प्रिंग वेबफ्लक्स और स्प्रिंग डेटा रिएक्टिव में पेजिनेशन को लागू करने का कोई तरीका है?

  2. नेस्टजेएस के एबीसी:मोंगोडीबी (मोंगोज) के साथ एक शुरुआती गाइड।

  3. सॉल्टस्टैक के साथ मोंगोडीबी को स्वचालित करना

  4. दस्तावेज़ों के नेस्टेड सरणी में एम्बेडेड दस्तावेज़ निकालें

  5. मोंगोडीबी:डीबी से कनेक्शन जांचें