बहुत अधिक खुली फाइलों की समस्या का समाधान

श्रेणियाँ देखें

बहुत अधिक खुली फाइलों की समस्या का समाधान

लिनक्स-आधारित प्रणालियों में जैसे कि RELIANOID उपकरणों में, प्रत्येक नेटवर्क कनेक्शन, सॉकेट या खुली फ़ाइल एक ऊर्जा की खपत करती है। फाइल डिस्क्रिप्टरऑपरेटिंग सिस्टम संसाधनों की कमी को रोकने के लिए एक साथ खोले जा सकने वाले फ़ाइल डिस्क्रिप्टरों की संख्या पर सीमा लागू करता है।

यदि कोई प्रक्रिया अपनी फ़ाइल डिस्क्रिप्टर सीमा तक पहुँच जाती है, तो वह अतिरिक्त फ़ाइलें या सॉकेट खोलने में सक्षम नहीं होगी, और सिस्टम निम्न त्रुटि उत्पन्न कर सकता है:

बहुत अधिक खुली फाइलें

यह स्थिति सिस्टम की कार्यक्षमता को प्रभावित कर सकती है, जिससे सेवाएं प्रतिक्रिया देना बंद कर सकती हैं या प्रभावित प्रक्रिया या सिस्टम के पुनः आरंभ होने तक नए कनेक्शन स्थापित करने में विफल हो सकती हैं।

यह लेख बताता है कि फ़ाइल डिस्क्रिप्टर सीमाएँ कैसे काम करती हैं। RELIANOID सिस्टम और प्रशासक आवश्यकता पड़ने पर उनमें कैसे बदलाव कर सकते हैं।

फ़ाइल डिस्क्रिप्टर सीमाएँ कैसे काम करती हैं #

लिनक्स दो मुख्य प्रकार की सीमाओं के माध्यम से फ़ाइल डिस्क्रिप्टर को प्रबंधित करता है:

  • सिस्टम-व्यापी सीमाएँ
  • प्रति-प्रक्रिया सीमाएँ

स्थिर संचालन सुनिश्चित करने के लिए दोनों को उचित रूप से कॉन्फ़िगर किया जाना चाहिए।

सिस्टम-व्यापी फ़ाइल डिस्क्रिप्टर सीमाएँ #

लिनक्स कर्नेल पूरे सिस्टम में आवंटित किए जा सकने वाले फ़ाइल डिस्क्रिप्टरों की संख्या पर एक वैश्विक सीमा बनाए रखता है। यह मान कर्नेल पैरामीटर द्वारा नियंत्रित होता है: fs.file-max

आप निम्न माध्यम का उपयोग करके वर्तमान मान देख सकते हैं:

sysctl fs.file-max

उदाहरण आउटपुट:

fs.फ़ाइल-अधिकतम = 1000000

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

आवश्यकता पड़ने पर, प्रशासक निम्न का उपयोग करके अस्थायी रूप से मान बढ़ा सकते हैं:

sysctl -w fs.file-max=2000000

रिबूट के बाद भी बदलाव को स्थायी बनाए रखने के लिए, निम्नलिखित पैरामीटर जोड़ें: /etc/sysctl.conf

उदाहरण:

fs.फ़ाइल-अधिकतम = 2000000

निम्न प्रकार से कॉन्फ़िगरेशन लागू करें:

sysctl -p

प्रति-प्रक्रिया फ़ाइल विवरणक सीमाएँ #

वैश्विक सिस्टम सीमा के अतिरिक्त, प्रत्येक प्रक्रिया की अपनी एक सीमा होती है कि वह कितनी खुली फाइलों को संभाल सकती है। इस सीमा को नियंत्रित करने के लिए निम्न का उपयोग किया जाता है। ulimit.

आप वर्तमान सीमा की जांच निम्न प्रकार से कर सकते हैं:

ulimit -n

उदाहरण आउटपुट:

100000

इससे यह संकेत मिलता है कि एक ही प्रक्रिया 100,000 तक फाइल डिस्क्रिप्टर खोल सकती है।

यदि कोई प्रक्रिया इस सीमा तक पहुँच जाती है, तो यह "बहुत अधिक खुली फाइलें" त्रुटि उत्पन्न करेगी, भले ही सिस्टम-व्यापी सीमा अभी भी उपलब्ध हो।

फ़ाइल डिस्क्रिप्टर सीमाएँ RELIANOID #

RELIANOID सेवाएं अपनी प्रति-प्रक्रिया फ़ाइल विवरणक सीमाएं निम्नलिखित कॉन्फ़िगरेशन फ़ाइल से लोड करती हैं:

/etc/profile/relianoid.sh

यह सुनिश्चित करता है RELIANOID घटक बड़ी संख्या में नेटवर्क कनेक्शनों को संभालने के लिए आवश्यक सीमाओं के साथ काम करते हैं।

हालांकि, एक ही सिस्टम पर चलने वाली तृतीय-पक्ष प्रक्रियाएं स्वचालित रूप से इन सीमाओं को प्राप्त नहीं कर सकती हैं । इसलिए, यदि निगरानी एजेंटों, बाहरी उपकरणों या कस्टम सेवाओं की सीमाएं आवश्यक सीमा से कम हैं, तो उन्हें फ़ाइल विवरणक की कमी का सामना करना पड़ सकता है।

तृतीय-पक्ष प्रक्रियाओं के लिए सीमाओं का समायोजन #

यदि किसी तृतीय-पक्ष एप्लिकेशन को उच्च फ़ाइल डिस्क्रिप्टर सीमा की आवश्यकता होती है, तो उन्हें निम्न में कॉन्फ़िगर किया जा सकता है: /etc/security/limits.conf

उदाहरण के लिए:

* सॉफ्ट नोफाइल 200000 * हार्ड नोफाइल 200000

यह कॉन्फ़िगरेशन सभी उपयोगकर्ताओं के लिए खुली फ़ाइलों की अनुमत संख्या को बढ़ाता है।

इसके अलावा, किसी विशिष्ट उपयोगकर्ता पर सीमाएं लागू की जा सकती हैं:

एनसीपीए सॉफ्ट नोफाइल 200000 एनसीपीए हार्ड नोफाइल 200000

परिवर्तन लागू करने के बाद, प्रभावित सेवा या प्रक्रिया को पुनरारंभ करें ताकि वह अद्यतन सीमाओं को लोड कर सके।

निष्कर्ष #

"बहुत अधिक खुली फाइलें" त्रुटि तब उत्पन्न होती है जब कोई प्रक्रिया अनुमत अधिकतम फाइल डिस्क्रिप्टर संख्या तक पहुँच जाती है और अतिरिक्त फाइलें या नेटवर्क सॉकेट खोलने में असमर्थ हो जाती है। इस सीमा के पार होने पर, सेवाएं नए कनेक्शन स्वीकार करने या सामान्य रूप से कार्य करने में विफल हो सकती हैं।

इस स्थिति से बचने के लिए, प्रशासकों को यह सुनिश्चित करना चाहिए कि दोनों सिस्टम-व्यापी फ़ाइल विवरणक सीमा (fs.file-max) और यह प्रति-प्रक्रिया सीमा द्वारा परिभाषित ulimit ठीक से विन्यस्त हैं.

In RELIANOID सिस्टम, सेवा-संबंधी सीमाएं लोड की जाती हैं /etc/profile/relianoid.shहालाँकि, एक ही उपकरण पर चलने वाले तृतीय-पक्ष अनुप्रयोगों को अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता हो सकती है। /etc/security/limits.conf ताकि उन्हें उपयुक्त फ़ाइल डिस्क्रिप्टर सीमाएं विरासत में मिलें।

पर्याप्त सीमाएं बनाए रखकर और आवश्यकता पड़ने पर सिस्टम कॉन्फ़िगरेशन की समीक्षा करके, प्रशासक स्थिर संचालन सुनिश्चित करने और एक साथ कई कनेक्शनों को संभालने वाले वातावरण में सेवा व्यवधानों को रोकने में मदद कर सकते हैं।

📄 इस दस्तावेज़ को पीडीएफ प्रारूप में डाउनलोड करें #

    ई - मेल: *

    BetterDocs द्वारा संचालित