CentOS पर बढ़ता हुआ उभार


18

हमारे पास एक CentOS बॉक्स है जिसे मैं उन अधिकतम फ़ाइलों को बढ़ाने की कोशिश कर रहा हूं जो एक उपयोगकर्ता के पास हो सकती हैं। वर्तमान में जब मैं दौड़ता ulimit -Snहूं तो मुझे मिलता है 1024और ulimit -Hnदेता है 4096। मुझे लगभग 6000 की संख्या चाहिए।

में /etc/sysctl.confमैंने सेट किया है fs.file-max = 100000। में /etc/security/limits.confमैं निम्नलिखित सेट है:

username soft nofile 6000
username hard nofile 65535

मैंने लॉग आउट किया है और वापस लॉग इन किया है, usernameलेकिन अभी भी मेरे बदलाव नहीं दिख रहे हैं। इस मूल्य को परिवर्तित करने के लिए मुझे क्या चाहिए?

मेरे पास सब /etc/security/limits.dहै 90-nproc.conf। मैंने यह भी सुनिश्चित किया है कि ulimit को मेरे .bash_profile या .bashrc में नहीं बुलाया जा रहा है।

जब मैं sysctl -pइसे चलाता हूं, तो मैं जो सेटिंग्स चाहता हूं उसे बाहर निकालता हूं और यह उस मूल्य को दिखाता है fs.file-maxजो मैं चाहता हूं। लेकिन जब मैं दौड़ता ulimit -Snहूं तो मुझे 1048 मिलते हैं। अगर मैं दौड़ने की कोशिश करूं तो sysctl --systemमुझे मिल जाएगा error: Unknown parameter "--system"


क्या आपने रिबूट करने की कोशिश की? जहां तक ​​मुझे पता है कि सिस्टम बूट के दौरान उन सेटिंग्स को पढ़ा जाता है।
कामिल

उसके लिए आपको रिबूट की आवश्यकता नहीं है।
जेवियर लुकास

जवाबों:


14

/etc/sysctl.confफिर से पढ़ने के लिए मजबूर करने के लिए sysctl -p

फ़ाइल /etc/security/limits.confलॉगिन शेल द्वारा पढ़ी जाती है और आपको GUI में सक्रिय सत्र विंडो बंद करनी चाहिए। दूरस्थ लॉगिन के लिए, यह रीग्लो पर प्रभाव डालता है।


1
भाग गया, फिर भी एक के बाद परिवर्तन नहीं देख रहा था।
ट्यूबगुय 50035

@ tubaguy50035 fs.file-maxसिस्टम पर खुली फाइल की अधिकतम संख्या है। यह एक कठिन सीमा है और यह ulimitआपके मामले में कॉल से परिलक्षित नहीं होगा ।
जेवियर लुकास

ओह ठीक है। क्या मुझे अब बहुत सी फाइलें नहीं खोलनी चाहिए?
tubaguy50035

@ tubaguy50035 संबंधित नहीं। यह सिस्टम हार्ड लिमिट है जो किसी भी संख्या को लिमिट में ओवरराइड करेगा ।conf। लेकिन limit.conf अभी भी लागू है। क्या आप सीधे एक नए सत्र में ulimit के साथ कठिन और नरम सीमा निर्धारित करने का प्रयास कर सकते हैं और देख सकते हैं कि क्या आपको एक ही अधिकतम लाभ मिलता है? कुछ आपके कॉन्फ़िगरेशन को ओवरराइड करने लगता है।
जेवियर लुकास

यह कहता है कि ऑपरेशन की अनुमति नहीं है। क्या मुझे उपयोगकर्ता को किसी चीज़ की एक्सेस देने की आवश्यकता है? मैं बल्कि वेब उपयोगकर्ता को रूट विशेषाधिकार नहीं है।
tubaguy50035

6

जैसा कि एक अन्य पोस्टर में कहा गया है, आपको चल रहे कर्नेल में sysctl का मान निर्धारित करना होगा। ऐसे कई तरीके हैं जिनसे आप रिबूट किए बिना मान सेट कर सकते हैं:

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

IMHO अंतिम तरीका सबसे अच्छा है, क्योंकि यह इस आदेश की प्रतिकृति करता है कि बूट के दौरान सेटिंग्स को लागू किया जाएगा (और इस प्रकार यदि आपके पास एक संघर्ष है तो यह स्पष्ट हो जाएगा)।

नोट: मुझे यकीन नहीं है कि आप किस सेंटोस के संस्करण का उपयोग कर रहे हैं, लेकिन कम से कम 7 पर मैं एक समस्या में चला गया हूं, जहां अगर कोई कारण के लिए ड्रैकुट इनट्रामरफ्स का पुनर्निर्माण करता है (जैसे कि नया कर्नेल मॉड्यूल स्थापित करते समय) तो यह कॉपी हो जाएगा inetramfs में /etc/sysctl.* की सामग्री, जिसे तब उस चरण के दौरान systemd-sysctl द्वारा निष्पादित किया जाएगा, भले ही आप बाद में /etc/sysctl.conf से उन प्रविष्टियों को हटा दें।

मेरे वातावरण में मैंने उस वातावरण से /etc/sysctl.* को बाहर करने के लिए systemd dracut मॉड्यूल को संपादित किया है (जैसा कि रूटफ़ूट के माउंट होने पर उन सेटिंग्स को सेट हो जाएगा और systemd-sysctl फिर से चलता है)। यह सिर्फ एक पकड़ है जिसे आप चला सकते हैं।


मैं सेंटोस 6.5 पर हूं। इसके कुछ परिणामों के साथ मेरे प्रश्न को भी अद्यतन किया।
ट्यूबगुय 50035
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.