2013-08-10 6 views
6

मुझे node-mongodb-native ड्राइवर के माध्यम से मोंगोडब से बात करने वाला एक एक्सप्रेस ऐप मिला है। मेरे ऐप में कुछ अनुरोध अंततः धीमे होते हैं। ड्राइवर कनेक्शन पूल आकार को बाधा के रूप में पुष्टि या रद्द करने के लिए कोई भी अच्छा टूल या रणनीतियां?ट्यूनिंग नोड-मोंगोड-मूल कनेक्शन पूल आकार

ट्यूनिंग पूल आकार के some discussion यहां है, लेकिन यह बहुत ही असुविधाजनक है। अहममैन ने नोट किया कि 5 का डिफ़ॉल्ट आमतौर पर काफी होता है, जबकि टिनाना ने कई समवर्ती अनुरोधों के साथ पूल को उछालने से महत्वपूर्ण लाभ देखा।

अद्यतन: यह सवाल मेरे पूल ट्यूनिंग और टूलींग चालक आकार को समझने के बजाय तत्काल प्रदर्शन समस्या का निवारण करने में मदद करना था। मैंने केवल इस मुद्दे को थोड़ा संदर्भ देने के लिए मेरे मुद्दे का वर्णन किया।

+1

क्या आपने प्रोफाइल किया है? क्या आप वाकई डीबी अनुरोधों को अधिकतर समय लेते हैं? (इसे समझने के लिए [पंचर] (https://github.com/nodeca/puncher) जैसे कुछ सरल उपयोग कर सकते हैं। 'Mongo.log' भी देखें।) – elmigranto

+0

@ एल्मिग्रेंटो, कुछ नोड प्रोफाइलिंग निश्चित रूप से मुझे और जानकारी प्राप्त करेगी । डीबी संचार सहजता से सबसे गंध से लग रहा था, इसलिए मैं अच्छा ड्राइवर-विशिष्ट टूलींग पहले से मौजूद होने पर भूगर्भीय प्रोफाइलिंग को स्थापित करने और समझने से बचने की उम्मीद कर रहा था। – hurrymaplelad

+0

जब आप ठोस डेटा प्राप्त कर सकते हैं और वास्तविक समस्या से छुटकारा पा सकते हैं तो आप "सहजता से सबसे अधिक सुगंधित" चीजों को ठीक करने में समय क्यों व्यतीत करना चाहते हैं? – elmigranto

उत्तर

5

इस तरह के परिदृश्यों में, पहला कदम हमेशा डीबी के साथ शुरू करना है।

यदि आपके पास ऐसे प्रश्न हैं जो प्रतिक्रिया देने में धीमे हैं, तो उन प्रश्नों को धीमे लॉग में दिखाई देना चाहिए। official docs for profiling पर एक नज़र डालें। "धीमे" प्रश्नों के लिए डिफ़ॉल्ट मान लगभग 100ms है, इसलिए यदि आपके धीमे प्रश्न डीबी की वजह से हैं, तो आप वहां सबूत देखेंगे।

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

किसी भी अच्छे उपकरण या रणनीतियां ड्राइवर कनेक्शन पूल आकार को बाधा के रूप में पुष्टि या रद्द करने के लिए?

एक बार जब आप डीबी की संभावना से इनकार किया है और आप निगरानी कॉन्फ़िगर किया है तो आप कनेक्शन पूल आकार खोल सकते हैं। एक बार जब आप सब कुछ जगह में हो जाएंगे। आप पूल आकार को ट्विक कर पाएंगे और सुनिश्चित करेंगे कि आपके पास (ए) समस्या हल हो गई है और (बी) अधिक समस्याएं नहीं हुई हैं।

पूरा चक्र महत्वपूर्ण है।

यदि आप कनेक्शन पूल के साथ मिलते हैं लेकिन आप धीमे लॉग और कुल कनेक्शन नहीं देख रहे हैं तो आप केवल और अधिक समस्याएं पैदा करेंगे।

+0

अच्छे अंक। धीमे अनुरोधों के साथ हमने कोई धीमी क्वेरी नहीं देखी। मोंगो लॉक प्रतिशत (<1%), पृष्ठ दोष (अधिकतम 13/मिनट), और कनेक्शन (~ 50/6000) सभी स्वस्थ दिखते थे, यही कारण है कि हमने नोड ड्राइवर कनेक्शन पूल पर संदेह करना शुरू कर दिया। डीबी के बाद ड्राइवर को प्रोफाइल करने पर कोई विचार अस्वीकार कर दिया गया है? – hurrymaplelad

+0

ड्राइवर को प्रोफाइल करने के लिए नोड.जेएस डीबगिंग टूल में शामिल होना आवश्यक है। यह देखते हुए कि आप नोड में काम कर रहे हैं, ये शायद आसपास के लिए आसान हैं, लेकिन विस्तृत प्रोफाइलिंग नोड में तुच्छ नहीं है। उस ने कहा, आप मोंगोडीबी के साथ 50 समवर्ती कनेक्शन पर बैठे हैं और आप उस सारी जानकारी को ट्रैक कर रहे हैं, इसलिए आपके पास कनेक्शन पूलिंग को खोलने के लिए आवश्यक सभी टूल्स हैं और देखें कि यह बेहतर है या नहीं। –

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