अपने एप्लिकेशन को चलाते समय मुझे कभी-कभी एक त्रुटि मिलती है too many files open
।
रनिंग ulimit -a
रिपोर्ट्स कि सीमा 1024 है। मैं 1024 से ऊपर की सीमा कैसे बढ़ा सकता हूं?
ulimit -n 2048
अनुमति त्रुटि में परिणाम संपादित करें ।
अपने एप्लिकेशन को चलाते समय मुझे कभी-कभी एक त्रुटि मिलती है too many files open
।
रनिंग ulimit -a
रिपोर्ट्स कि सीमा 1024 है। मैं 1024 से ऊपर की सीमा कैसे बढ़ा सकता हूं?
ulimit -n 2048
अनुमति त्रुटि में परिणाम संपादित करें ।
जवाबों:
तुम हमेशा एक कोशिश कर सकता है ulimit -n 2048
। यह केवल आपके वर्तमान शेल के लिए सीमा को रीसेट करेगा और आपके द्वारा निर्दिष्ट संख्या हार्ड सीमा से अधिक नहीं होनी चाहिए
प्रत्येक ऑपरेटिंग सिस्टम में कॉन्फ़िगरेशन फ़ाइल में एक अलग हार्ड लिमिट सेटअप होता है। उदाहरण के लिए, सोलारिस पर हार्ड ओपन फाइल लिमिट / etc / सिस्टम से बूट पर सेट की जा सकती है।
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
OS X पर, इसी डेटा को /etc/sysctl.conf में सेट किया जाना चाहिए।
kern.maxfilesperproc=166384
kern.maxfiles=8192
लिनक्स के तहत, ये सेटिंग्स अक्सर /etc/security/limits.conf में होती हैं।
दो प्रकार की सीमाएँ हैं:
सॉफ्ट सीमाएं किसी भी उपयोगकर्ता द्वारा निर्धारित की जा सकती हैं, जबकि हार्ड सीमा केवल रूट द्वारा परिवर्तनशील हैं। सीमाएं एक प्रक्रिया की एक संपत्ति हैं। उन्हें विरासत में मिला है जब एक बच्चे की प्रक्रिया बनाई जाती है तो सिस्टम-वाइड सीमा को इनिट स्क्रिप्ट में सिस्टम इनिशियलाइज़ेशन के दौरान सेट किया जाना चाहिए और उपयोगकर्ता सीमाएँ pam_limits का उपयोग करके उपयोगकर्ता लॉगिन के दौरान सेट की जानी चाहिए।
मशीन बूट होने पर अक्सर डिफॉल्ट सेट होते हैं। इसलिए, भले ही आप एक अलग शेल में अपने एलिमिट को रीसेट कर सकते हैं, आप पा सकते हैं कि यह रिबूट पर पिछले मूल्य पर वापस रहता है। यदि आप डिफ़ॉल्ट को बदलना चाहते हैं, तो आप अपने बूट स्क्रिप्ट को अस्तित्व में लाने की आज्ञा देना चाहते हैं।
ulimit
। आपको यह निर्दिष्ट करना होगा कि आप क्या उपयोग कर रहे हैं (जैसे WSL, Cygwin)।
यदि आप लिनक्स का उपयोग कर रहे हैं और आपको अनुमति त्रुटि मिली है, तो आपको /etc/limits.conf
या /etc/security/limits.conf
फ़ाइल (जहां फ़ाइल स्थित है, आपके विशिष्ट लिनक्स वितरण पर निर्भर करता है) में अनुमत सीमा को बढ़ाने की आवश्यकता होगी ।
उदाहरण के लिए, मशीन पर किसी को भी 10000 तक की खुली फ़ाइलों की संख्या बढ़ाने की अनुमति देने के लिए limits.conf
फ़ाइल में लाइन जोड़ें ।
* hard nofile 10000
फिर अपने सिस्टम में लॉगआउट करें और पुनः करें और आपको ऐसा करने में सक्षम होना चाहिए:
ulimit -n 10000
बिना अनुमति त्रुटि के।
root
। root hard nofile 10000
यदि आप root
सीमा को समायोजित करना चाहते हैं तो आपको निर्दिष्ट करना होगा ।
ulimit
और अंत में पता चला कि मैं रूट के रूप में लॉग इन हूं। इसलिए मैं 1024 में देखता रहा ulimit -a
। मैंने वाइल्डकेयर बदल दिया, और एक *
अंदर जोड़ा limits.conf
। अब सब अच्छा है, (ssh कीज़ का उपयोग कर रहे हैं चिंता न करें: P) - धन्यवाद !!!
/etc/security/limits.d/
:।
1) निम्नलिखित पंक्ति को इसमें जोड़ें /etc/security/limits.conf
webuser hard nofile 64000
फिर वेबसर्वर के रूप में लॉगिन करें
su - webuser
2) वेबसर्वर के लिए दो फ़ाइलों का पालन करें
append .bashrc और .bash_profile फ़ाइल चलाकर
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) लॉग आउट करें, फिर लॉग इन करें और सत्यापित करें कि परिवर्तन सही ढंग से किए गए हैं:
$ ulimit -a | grep open
open files (-n) 64000
यह और उन्हें उछाल, उछाल उछाल।
यदि आपकी कुछ सेवाएं ulimits में चल रही हैं, तो कभी-कभी उपयुक्त आदेशों को सेवा की init-script में डालना आसान होता है। उदाहरण के लिए, जब अपाचे रिपोर्टिंग कर रहा है
[अलर्ट] (११) संसाधन अस्थायी रूप से अनुपलब्ध: apr_thread_create: श्रमिक धागा बनाने में असमर्थ
ulimit -s unlimited
में डालने का प्रयास करें /etc/init.d/httpd
। इसके लिए सर्वर रिबूट की आवश्यकता नहीं है।