2010-02-24 18 views
7

तो मेरी पैसेंजर मेरी रेल एप्लिकेशन के 5 दृष्टांत spinsमोंगोडीबी: कनेक्शन पूलिंग और टाइमआउट क्या है?

मैं Connection.new का उपयोग कर MongoDB से कनेक्ट ("स्थानीय होस्ट", 3000,: pool_size => 1,: टाइमआउट => 5)

क्यों होगा मुझे "रेल कनेक्शन" की आवश्यकता है, अगर मैं केवल रेलवे ऐप शुरू करते समय ओवरहेड करता हूं, प्रति अनुरोध नहीं? एक प्रक्रिया को 1 से अधिक कनेक्शन की आवश्यकता क्यों होगी?

और टाइमआउट का उद्देश्य क्या है? मैं कनेक्शन को टाइमआउट क्यों चाहूंगा? क्या यह रेल प्रक्रिया के जीवनकाल के माध्यम से नहीं रहना चाहिए?

तो उलझन में ...

यह सवाल रूबी और मोंगो के लिए विशिष्ट है लेकिन मैं इसे अन्य भाषाओं/डेटाबेस के लिए लागू होता है लगता है।

उत्तर

3

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

कनेक्शन पूलिंग कुछ बहु-थ्रेडेड ऐप्स के लिए उपयोगी हो सकती है। pool_size कनेक्शन समेकित समवर्ती धागे की अधिकतम संख्या है, और अपवाद को फेंकने से पहले एक थ्रेड उपलब्ध सॉकेट के लिए अधिकतम सेकंड की प्रतीक्षा कर सकता है।

+0

रूबी ड्राइवर के मामले में, conn = Connection.new (...,: pool_size => 10), किस ऑब्जेक्ट पूल और उसके कनेक्शन का मालिक है? क्या मीन पूल करना मुझे अपने धागे में कनेक्शन लॉक करने की ज़रूरत नहीं है? – Alexandre

+0

उस मामले में, कॉन कनेक्शन और पूल का मालिक होगा। आपको कनेक्शन ऑब्जेक्ट के चारों ओर लॉक करने की ज़रूरत नहीं है। –

संबंधित मुद्दे