Computer >> कंप्यूटर >  >> प्रणाली >> Linux

लिनक्स में 'बहुत अधिक खुली फ़ाइलें' त्रुटि को कैसे ठीक करें?

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

इस लेख में हम सीखेंगे कि लिनक्स में खुली फाइलों की अधिकतम संख्या पर वर्तमान सीमा की जांच कैसे करें और पूरे मेजबान, व्यक्तिगत सेवा या वर्तमान सत्र के लिए इसे कैसे बदलें।

'बहुत अधिक फ़ाइलें खोलें' त्रुटि और Linux में फ़ाइल सीमाएं खोलें

सबसे पहले, आइए देखें कि 'बहुत अधिक खुली हुई फ़ाइलें' त्रुटि कहाँ दिखाई देती है। बड़ी संख्या में लॉग पढ़ते समय यह सबसे अधिक बार स्थापित NGINX/httpd वेब सर्वर या डेटाबेस सर्वर (MySQL/MariaDB/PostgreSQL) वाले सर्वर पर होता है। उदाहरण के लिए, जब एक Nginx वेब सर्वर खुली फ़ाइल सीमा से अधिक हो जाता है, तो आपको एक त्रुटि दिखाई देगी:

socket () failed (29: Too many open files) while connecting to upstream

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

इस कमांड का उपयोग करके, आप अपने सिस्टम द्वारा खोले जा सकने वाले फाइल डिस्क्रिप्टर की अधिकतम संख्या प्राप्त कर सकते हैं:

# cat /proc/sys/fs/file-max

वर्तमान उपयोगकर्ता के लिए खुली फ़ाइल सीमा 1024 है। आप इसे निम्न प्रकार से देख सकते हैं:

# ulimit -n

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

दो सीमा प्रकार हैं:कठिन और नरम . एक उपयोगकर्ता सॉफ्ट लिमिट को बदल सकता है (हालाँकि, सॉफ्ट वैल्यू हार्ड से अधिक नहीं हो सकती)। केवल एक विशेषाधिकार प्राप्त या मूल उपयोगकर्ता ही हार्ड लिमिट मान को संशोधित कर सकता है।

सॉफ्ट लिमिट प्रदर्शित करने के लिए, यह कमांड चलाएँ:

# ulimit –nS

हार्ड लिमिट मान प्रदर्शित करने के लिए:

# ulimit -nH

Linux में अधिकतम खुली फ़ाइल सीमा कैसे बढ़ाएँ?

सभी सेवाओं को बड़ी संख्या में फ़ाइलें खोलने की अनुमति देने के लिए, आप अपने Linux OS की सीमाएँ बदल सकते हैं। सर्वर या सत्र के पुनरारंभ होने के बाद नई सेटिंग्स को स्थायी बनाने और उनके रीसेट को रोकने के लिए, आपको /etc/security/limits.conf में परिवर्तन करने होंगे। . ये पंक्तियां जोड़ें:

* hard nofile 97816
* soft nofile 97816

यदि आप उबंटू का उपयोग कर रहे हैं, तो इस लाइन को भी जोड़ें:

session required pam_limits.so

यह पैरामीटर उपयोगकर्ता प्रमाणीकरण के बाद खुली फाइलों की सीमा निर्धारित करने की अनुमति देता है।

कोई भी परिवर्तन करने के बाद, टर्मिनल को पुनः लोड करें और max_open_files मान की जाँच करें:

# ulimit -n

97816

प्रति सेवा ओपन फाइल डिस्क्रिप्टर सीमा बढ़ाना

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

# systemctl edit httpd.service

अपनी इच्छित सीमाएँ जोड़ें, उदा.:

[Service]
LimitNOFILE=16000
LimitNOFILESoft=16000

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

परिवर्तन करने के बाद, सेवा कॉन्फ़िगरेशन को अपडेट करें और इसे पुनरारंभ करें:

# systemctl daemon-reload
# systemctl restart httpd.service

यह सुनिश्चित करने के लिए कि क्या मान बदल गए हैं, सेवा पीआईडी ​​प्राप्त करें:

# systemctl status httpd.service

उदाहरण के लिए, सेवा PID 3724 है:

# cat /proc/3724/limits | grep "Max open files”

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

इस प्रकार, आपने किसी विशिष्ट सेवा के लिए अधिकतम खुली हुई फ़ाइलों के मान बदल दिए हैं।

Nginx और Apache के लिए अधिकतम ओपन फाइल लिमिट कैसे सेट करें?

वेब सर्वर के लिए खुली फाइलों की संख्या पर सीमा बदलते समय, आपको सेवा कॉन्फ़िगरेशन फ़ाइल भी बदलनी होगी। उदाहरण के लिए, Nginx कॉन्फ़िगरेशन फ़ाइल में निम्न निर्देश मान निर्दिष्ट/बदलें /etc/nginx/nginx.conf :

worker_rlimit_nofile 16000
वर्कर_कनेक्शन 8192 के साथ एक अत्यधिक लोड 8-कोर सर्वर पर Nginx को कॉन्फ़िगर करते समय, आपको 8192*2*8 (vCPU) =131072 निर्दिष्ट करना होगा। कार्यकर्ता_rlimit_nofile.

फिर Nginx को पुनरारंभ करें।

अपाचे के लिए, एक निर्देशिका बनाएँ:

# mkdir /lib/systemd/system/httpd.service.d/

फिर limit_nofile.conf फाइल बनाएं:

# nano /lib/systemd/system/httpd.service.d/limit_nofile.conf

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

इसमें जोड़ें:

[Service]
LimitNOFILE=16000

httpd को पुनरारंभ करना न भूलें।

वर्तमान सत्र के लिए फ़ाइल खोलने की सीमा बदलें

अपने टर्मिनल सत्र के लिए अधिकतम खुली फ़ाइल सीमा बदलने के लिए, यह कमांड चलाएँ:

# ulimit -n 3000

टर्मिनल को बंद करने और एक नया सत्र बनाने के बाद, सीमाएं /etc/security/limits.conf में निर्दिष्ट मूल मानों पर वापस आ जाएंगी। ।

सिस्टम के लिए सामान्य मान बदलने के लिए /proc/sys/fs/file-max , fs.file-max मान को /etc/sysctl.conf में बदलें:

fs.file-max = 100000

और इसे लागू करें:

# sysctl -p

लिनक्स में  बहुत अधिक खुली फ़ाइलें  त्रुटि को कैसे ठीक करें?

इस लेख में हमने सीखा है कि जब लिनक्स में ओपन फाइल डिस्क्रिप्टर की सीमा का मान बहुत छोटा है, तो समस्या को कैसे हल किया जाए, और सर्वर पर इन सीमाओं को बदलने के कुछ विकल्पों पर चर्चा की।


  1. विंडोज 10 पर 0xc00d36cb त्रुटि को कैसे ठीक करें?

    कुछ वीडियो प्रारूप (विशेष रूप से .MKV) चलाने में असमर्थ होने के बाद कई विंडोज़ उपयोगकर्ता प्रश्नों के साथ हमारे पास पहुंच रहे हैं। स्वरूप) या किसी .MP3 या .MP4 फ़ाइलों के अन्य विवरणों का नाम बदलने या संशोधित करने का प्रयास करते समय। जो त्रुटि कोड आता है वह है 0xC00D36CB . जबकि कुछ उपयोगकर्ता रिपोर्ट

  1. त्रुटि 1067 को कैसे ठीक करें:'प्रक्रिया अप्रत्याशित रूप से समाप्त हो गई'

    त्रुटि 1067 विभिन्न विंडोज सेवा के साथ हो सकती है और संदेश आमतौर पर तब प्रकट होता है जब आप किसी क्रिया को निष्पादित करने का प्रयास कर रहे होते हैं जो आमतौर पर सेवा शुरू करने का कारण बनता है। इस त्रुटि संदेश के लिए सबसे आम घटना इसके समान SQL सेवा और सेवा होगी। इस समस्या को हल करने के लिए काफी कुछ

  1. Windows 11 में 0xc00007b त्रुटि को कैसे ठीक करें

    इस लेख में, हमने उन हैक्स को सूचीबद्ध किया है जो विंडोज 11 में 0xc00007b त्रुटि को ठीक करने में मदद करेंगे। विंडोज ओएस का उपयोग करते समय त्रुटियों में भागना कोई बड़ी बात नहीं है। सभी नए विंडोज 11 के साथ पिछले पुनरावृत्तियों बग और त्रुटियों से भरे हुए हैं और आप कभी भी एक या दूसरे में चलने के लिए बाध