मुझे तीन मोंगोड सर्वर (16 जीबी रैम प्रत्येक, कम से कम 4 सीपीयू कोर और असली एचडीडी) और एक समर्पित आर्बिटर का एक छोटा प्रतिकृति सेट मिला है। प्रतिकृति डेटा में वर्तमान में लगभग 100,000,000 रिकॉर्ड हैं। लगभग सभी डेटा एक संग्रह में _id
(ऑटो-जनरेटेड मोंगो आईडी) और date
पर एक इंडेक्स के साथ एक संग्रह में है, जो मूल मोंगो दिनांक फ़ील्ड है। समय-समय पर मैं तारीख सूचकांक, कुछ इस तरह (मोंगो खोल से) का उपयोग कर इस संग्रह से पुराने रिकॉर्ड को हटा दें:मोंगोडीबी बहुत धीमी गति से हटा देता है
db.repo.remove({"date" : {"$lt" : new Date(1362096000000)}})
यह काम करता है, लेकिन यह बहुत, बहुत धीमे चलता है। मेरे नोड्स में से एक के पास दो अन्य की तुलना में धीमी I/O है, जिसमें केवल एक ही सैटा ड्राइव है। जब यह नोड प्राथमिक होता है, तो हटाए गए लगभग 5-10 दस्तावेज़/सेकेंड पर चलते हैं। Rs.stepDown() का उपयोग करके मैंने इस धीमी प्राथमिक को निषेध किया है और बेहतर I/O के साथ प्राथमिक प्राप्त करने के लिए एक चुनाव को मजबूर किया है। उस सर्वर पर, मुझे लगभग 100 दस्तावेज़/सेकंड मिल रहे हैं।
मेरा मुख्य प्रश्न है, क्या मुझे चिंतित होना चाहिए? मेरे पास प्रतिकृति पेश करने से पहले संख्याएं नहीं हैं, लेकिन मुझे पता है कि डिलीट बहुत तेज था। मैं सोच रहा हूं कि प्रतिकृति सेट सिंक I/O प्रतीक्षा कर रहा है, या यदि कोई अन्य कारण है। डिलीट कथन समाप्त होने तक मैं अस्थायी रूप से सिंक और इंडेक्स अपडेट अक्षम करने से पूरी तरह से खुश हूं, लेकिन मुझे वर्तमान में ऐसा करने के किसी भी तरीके से नहीं पता है। किसी कारण से, जब मैं तीन नोड्स में से दो को अक्षम करता हूं, केवल एक नोड और आर्बिटर छोड़कर, शेष नोड डिमोट किया जाता है और लिखना असंभव होता है (क्या इसे हल करने के लिए मध्यस्थ नहीं है?)।
यदि आप दिनांक सूचकांक को छोड़ते और फिर से बनाते हैं, तो सामान्य प्रदर्शन का कुछ संकेत देने के लिए, सभी 100 एम दस्तावेज़ों को स्कैन करने में लगभग 15 मिनट लगते हैं। इस क्वेरी संतुष्ट के रूप में कई -
कारण आप अपने चार नोड्स को अक्षम नहीं कर सकते हैं यह है कि उपलब्ध अधिकांश सेट के बिना प्राथमिक नहीं हो सकता है। आपके पास चार सदस्य क्यों हैं? आपको एक प्रतिकृति सेट में तीन नोड्स के साथ एक मध्यस्थ की आवश्यकता नहीं है। –
गोटा - इस समय मेरे पास केवल चार नोड्स हैं क्योंकि 5 वें नोड में हार्ड ड्राइव गुम है और मैंने इसे क्लस्टर से हटा दिया :) विडंबना यह है कि, मैं एक मास्टर चुनाव में हमेशा विजेता होने की गारंटी देने के लिए एक मध्यस्थ लाया। वैसे भी, arbiter एक छोटा वीएम है जिसे मैं अन्य कम ओवरहेड सामानों के लिए भी उपयोग करता हूं जैसे अन्य शेडिंग क्लस्टर में कॉन्फ़िगर सर्वर। – SteveK
जब आपको चार नोड्स (पांच वोट प्राप्त करने के लिए) था तो आपको एक आर्बिटर की आवश्यकता होती थी, लेकिन जब आप प्रतिकृति सेट से पांचवें नोड को हटाते हैं तो आपको आर्बिटर को भी हटा देना चाहिए, ताकि आपके पास तीन सदस्य शेष रहें। –