2011-12-09 14 views
20

मैं 20k + समवर्ती उपयोगकर्ताओं के साथ एक वेबसाइट होने जा रहा हूं।mongodb और अधिकतम कनेक्शन

मैं डेटा प्रबंधन के लिए एक प्रबंधन नोड और 3 या अधिक नोड्स का उपयोग करके मोंगोडब का उपयोग करने जा रहा हूं।

अब मेरी समस्या अधिकतम कनेक्शन है। यदि मेरे पास डेटाबेस तक पहुंचने वाले बहुत से उपयोगकर्ता हैं, तो मैं कैसे सुनिश्चित कर सकता हूं कि वे अधिकतम सीमा तक नहीं पहुंचते हैं? कनेक्शन को बढ़ाने के लिए मुझे कर्नेल पर शायद कुछ भी बदलना है?

मूल रूप से डेटाबेस का उपयोग साइट पर जुड़े उपयोगकर्ताओं को पकड़ने के लिए किया जाएगा, इसलिए भारी पढ़ने/लिखने के संचालन होने जा रहे हैं।

अग्रिम धन्यवाद।

+1

लगातार कनेक्शन का उपयोग करें, अधिकांश mongodb ड्राइवरों में avaialable। – DhruvPathak

+0

यह आपके पसंदीदा स्टैक (एलएएमपी/PHP/पर्ल/पायथन/रेल/अपाचे/टोमकैट/विंडोज/लिनक्स पर रूबी) जानने के लिए काफी मदद करेगा? – Kato

उत्तर

23

जब भी कोई नया उपयोगकर्ता कनेक्ट होता है तो आप एक नया डेटाबेस कनेक्शन नहीं खोलना चाहते हैं। मुझे नहीं पता कि क्या आप 20k + समवर्ती उपयोगकर्ताओं को आसानी से स्केल करने में सक्षम होंगे, क्योंकि मोंगोडीबी प्रत्येक नए कनेक्शन के लिए एक नया धागा उपयोग करता है। आप चाहते हैं कि आपका वेब ऐप बैकएंड कुछ डेटाबेस कनेक्शनों में से केवल एक खुला हो और केवल पूल में उन लोगों का उपयोग करें, खासकर जब वेब उपयोग बहुत असीमित और घटना संचालित होता है।

देखें: http://www.mongodb.org/display/DOCS/Connections

प्रति सर्वर टीसीपी कनेक्शन एक थ्रेड का उपयोग करेगा, इसलिए यह अत्यधिक की सिफारिश की है कि आपके आवेदन कनेक्शन पूलिंग के कुछ प्रकार का उपयोग करें। सौभाग्य से, अधिकांश ड्राइवर दृश्यों के पीछे आपके लिए इस को संभालते हैं। एक उल्लेखनीय अपवाद सेटअप है जहां आपका ऐप प्रत्येक अनुरोध के लिए एक नई प्रक्रिया बनाता है, जैसे सीजीआई और कुछ PHP की कॉन्फ़िगरेशन।

जो भी ड्राइवर आप उपयोग कर रहे हैं, आपको यह पता लगाना होगा कि वे कनेक्शन कैसे संभालते हैं और यदि वे पूल करते हैं या नहीं। उदाहरण के लिए, नोड का मोंगोस गैर-अवरुद्ध है और इसलिए आप प्रति ऐप एक कनेक्शन का उपयोग करते हैं। यह वह चीज है जिसे आप शायद चाहते हैं।

+0

आपके उत्तर के लिए धन्यवाद, अब, मैं कुल नोब हूं .. क्या है इस ड्राइवर के बारे में आप बात कर रहे हैं? मैं इसे कैसे स्थापित कर सकता हूं? धन्यवाद –

+1

@enrico वेल, प्रोग्रामिंग मॉडल जिसे आप उपयोग करना चाहते हैं वह घटना-आधारित प्रोग्रामिंग है, न कि थ्रेड-आधारित मॉडल जिसे आप सोच रहे थे। नोड.जेएस + एक्सप्रेस + मोंगोस + मोंगो डीबी इस के लिए एक लोकप्रिय ढेर है। यदि आप पर्ल में हैं, तो Mojolicious या AnyEvent में देखें। यदि आप किसी इवेंट सिस्टम का उपयोग नहीं करते हैं तो समस्या आप चलाएंगे, सी 10 के समस्या है: http://www.kegel.com/c10k.html मेरे पास यहां एक नोड.जेएस वेब ऐप का उदाहरण है: http : //github.com/EhevuTov/netPeek – EhevuTov