2015-07-23 9 views
5

के पुनर्वित्त के दौरान "बहुत अधिक खुली फ़ाइलें त्रुटि" मैं द्वितीयक प्रतिकृति सेट सदस्य को वायर्ड टाइगर में अपग्रेड कर रहा हूं। मैंने इसे मोंगोडीबी 2.6.3 से 3.0.4 तक अपग्रेड कर दिया है और स्टोरेज इंजन को वायर्ड टाइगर में बदल दिया है। अब यह प्राथमिक से सभी डेटा को पुनर्वित्त कर रहा है। कुछ समय निम्न त्रुटि प्राप्त होता है, और प्रक्रिया फिर से शुरू होता है:वायर्ड टाइगर - द्वितीयक प्रतिकृति सेट सदस्य

2015-07-22T13: 18: 55.658 + 0000 मैं सूचकांक [rsSync] सूचकांक का उपयोग करके बल्क विधि निर्माण

2015 -07-22T13: 18: 55.664 + 0000 I INDEX [rsSync] इंडेक्स का निर्माण किया। स्कैन 1591 कुल रिकॉर्ड। 0 सेकंड

2015-07-22T13: 18: 56.397 + 0000 ई भंडारण [rsSync] WiredTiger (24) [+१४३७५७११३६: 397,083] [20,413: 0x7f3d9ed29700], फ़ाइल: WiredTiger.wt, session.create: WiredTiger.turtle : fopen: बहुत अधिक फ़ाइलें खुली

2015-07-22T13: 18: 56.463 + 0000 ई आरईपीएल [rsSync] 8 24: बहुत अधिक फ़ाइलें खुली

2015-07-22T13: 18: 56.463 + 0000 ई REPL [rsSync] प्रारंभिक सिंक प्रयास विफल रहा, 9

उसी मशीन को पहले 2.6.3 संस्करण चल रहा था किसी भी खुली फ़ाइल सीमा मुद्दों के बारे में बताओ। मुझे पता है कि वायर्ड टाइगर अधिक फाइलें बना रहा है, इसलिए यह होना चाहिए, लेकिन क्या यह उन्हें एक साथ सभी खुले रखता है?

संदर्भ के लिए:

बिल्ली/proc/sys/एफएस/फ़ाइल अधिकतम

में विन्यास /etc/init.d/mongod है:

ulimit -n 64000

प्रलेखन के अनुसार ऐसा लगता है कि मोंगो में प्रत्येक डेटा फ़ाइल के लिए फ़ाइल डिस्क्रिप्टर होता है। वायर्ड टाइगर के रूप में हमारे संग्रह के लिए गणना के अनुसार प्रत्येक संग्रह के लिए प्रत्येक फ़ाइल + प्रत्येक फ़ाइल के लिए एक फ़ाइल में परिणाम होता है, जो 700K से अधिक तक जोड़ सकता है।

तो मैं 700000 या उच्चतर के लिए ulimit बदल सकते हैं, लेकिन मैं सोच रहा हूँ कि क्या यह सबसे सही समाधान है, और क्या विकल्प मौजूद है।

+0

आपको प्रक्रिया पर लगाए गए सीमाओं की जांच करने की आवश्यकता है (जरूरी नहीं कि आपकी प्रणाली व्यापक सेटिंग हो)। यहां एक आसान लिपि है जो यह आपके लिए करती है: http://docs.mongodb.org/manual/reference/ulimit/#proc-file-system –

+0

मैंने इसे भी चेक किया - वर्तमान में मेरा /etc/init.d/ मोंगोड स्क्रिप्ट 64000 के साथ सीमा के रूप में आता है।मेरा मानना ​​है कि यह पर्याप्त नहीं है - वायर्ड टाइगर के साथ प्रत्येक संग्रह + प्रत्येक इंडेक्स प्रति अलग फ़ाइल है, इसलिए 100 संग्रहों के डीबी के लिए और प्रति औसतन 10-20 सूचकांक प्रति औसतन, मुझे प्रति डीबी लगभग 1000-2000 फाइलें मिल रही हैं , और हम सैकड़ों डीबी के बारे में बात कर रहे हैं। –

उत्तर

4

वायर्ड टाइगर clean up open file descriptors पर निर्भर करता है कि वे कितने समय तक निष्क्रिय हैं, लेकिन बड़ी संख्या में संग्रह और अनुक्रमों में भारी गतिविधि के दौरान आप खुले फाइलों पर उलिमिट द्वारा बाध्य होने जा रहे हैं।

तो, हाँ, मूल रूप से आप जब तक कि आपको समस्या मारा सीमा को बढ़ाने, MMAPv1 साथ चिपके रहते हैं, या कुछ संग्रह को मजबूत करने की जरूरत है। मैं इस प्रकार के पैटर्न को रोकने के लिए अपने नमूना संख्याओं के साथ अपने उपयोग केस को रेखांकित करने के लिए एक सुविधा अनुरोध दर्ज करने की भी सिफारिश करता हूं (उदाहरण के लिए प्रति फ़ाइल एक से अधिक संग्रह)।

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