लालिम सीमा को अद्यतन करने के बाद भी 1024 फाइलों की सीमा की रिपोर्ट क्यों करता है ।conf?


9

मुझे अपनी redis.log फ़ाइल के शीर्ष पर यह त्रुटि दिखाई देती है:

वर्तमान अधिकतम खुली हुई फाइलें 1024 हैं। कम उल्टी की भरपाई करने के लिए मैक्सक्लेयर्स को 4064 तक घटा दिया गया है।

मैंने पत्र को इन चरणों का पालन किया है (और रिबूट किया गया है):

इसके अलावा, मैं इसे देखता हूं जब मैं दौड़ता हूं ulimit:

ubuntu@ip-XX-XXX-XXX-XXX:~$ ulimit -n
65535

क्या यह त्रुटि विश्वसनीय है? यदि नहीं, तो मुझे और कौन से कदम उठाने होंगे? मैं Ubuntu LTS 14.04.1 (फिर, पेड़ की नोक) पर रेडिस 2.8.13 (पेड़ की नोक) चला रहा हूं।

यहाँ उपयोगकर्ता जानकारी है:

ubuntu@ip-XX-XXX-XXX-XXX:~$ ps aux | grep redis
root      1027  0.0  0.0  66328  2112 ?        Ss   20:30   0:00 sudo -u ubuntu /usr/local/bin/redis-server /etc/redis/redis.conf
ubuntu    1107 19.2 48.8 7629152 7531552 ?     Sl   20:30   2:21 /usr/local/bin/redis-server *:6379               

सर्वर इसलिए ubuntu के रूप में चल रहा है।

यहाँ मेरी सीमाएँ हैं। बिना किसी टिप्पणी के फ़ाइल:

ubuntu@ip-XX-XXX-XXX-XXX:~$ cat /etc/security/limits.conf | sed '/^#/d;/^$/d'
ubuntu soft nofile 65535
ubuntu hard nofile 65535
root soft nofile 65535
root hard nofile 65535

और यहाँ sysctl fs.file-max का आउटपुट है:

ubuntu@ip-XX-XXX-XXX-XXX:~$ sysctl -a| grep fs.file-max
sysctl: permission denied on key 'fs.protected_hardlinks'
sysctl: permission denied on key 'fs.protected_symlinks'
fs.file-max = 1528687
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'

sudo के रूप में

ubuntu@ip-10-102-154-226:~$ sudo sysctl -a| grep fs.file-max
fs.file-max = 1528687

इसके अलावा, मैं इस त्रुटि को redis.log फ़ाइल के शीर्ष पर देखता हूं, निश्चित नहीं कि यह संबंधित है या नहीं। यह समझ में आता है कि उबंटू उपयोगकर्ता को अधिकतम खुली फ़ाइलों को बदलने की अनुमति नहीं है, लेकिन मुझे जो उच्च सेटिंग दी गई है, उसे देखते हुए उसे सेट करने की कोशिश की गई है:

[1050] 23 Aug 21:00:43.572 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
[1050] 23 Aug 21:00:43.572 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.

जवाबों:


4

आपको अपनी फ़ाइलों को /etc/pam.d/निर्देशिका के अंदर संपादित करना चाहिए ।

अपने मामले में, जब आप दौड़ते हैं sudo -u ubuntu /usr/local/bin/redis-server, तो आपको निम्नलिखित पंक्ति को जोड़ना चाहिए /etc/pam.d/sudoया /etc/pam.d/common-session-noninteractiveमामले /etc/pam.d/sudoमें यह शामिल करना चाहिए :

session required pam_limits.so

इससे कॉन्फ़िगरेशन प्रदान करने में मदद मिलेगी /etc/security/limits.conf


वह यह था! बहुत बहुत धन्यवाद। Ubuntu 2012.04 LTS से Ubuntu 2014.04 LTS में बदलाव की तरह लगता है।
२२:२४

खुशी है कि आपकी मदद की। वास्तव में मेरे xubuntu 14.04 में /etc/pam.d/sudo के अंदर यह लाइन नहीं है। अभी 12.04 की जांच नहीं कर सकते।
Navern

का उपयोग कर डेबियन पर systemd करते हैं, को देखने के serverfault.com/questions/770037/...
tholu

3

इस पोस्ट को खोजने वाले उपयोगकर्ताओं के लिए एक और सुझाव जिसका मुद्दा pam_limits.so से संबंधित नहीं है। मेरे मामले में, रेडिस को पर्यवेक्षक के माध्यम से लॉन्च किया जा रहा था। इस मामले में, जिस विधि से पर्यवेक्षक ने उपयोगकर्ता संदर्भों को स्विच किया, उसके कारण नया सत्र सिस्टम डिफ़ॉल्ट सीमाओं के साथ चलाया जा सकता था, न कि उन जिन्हें मैंने उपयोगकर्ता के लिए कॉन्फ़िगर किया था।

उस मामले में समाधान यहाँ पाया गया था । इसकी कमी है, आपको पर्यवेक्षक में स्टार्टअप कमांड के भाग के रूप में ulimit -n के माध्यम से सीमा को परिभाषित करने की आवश्यकता है।

उदाहरण:

[program:redis-a]
command=bash -c "ulimit -n 32768; exec /usr/local/bin/redis-server /etc/redis/a.conf"

1

साथ ही ओपन फाइल लिमिट को बढ़ा रहा है। आपको अपने redis.conf में अधिकतम ग्राहक बढ़ाने की आवश्यकता है। यह डिफ़ॉल्ट रूप से केवल 10000 है।

# Once the limit is reached Redis will close all the new connections sending
# an error 'max number of clients reached'.
maxclients 1024000

0

समान समस्या वाले अन्य उबंटू उपयोगकर्ताओं के लिए ध्यान दें:

यदि आप बूट पर Redis शुरू कर रहे हैं, तो उपस्टार्ट के माध्यम से f.ex, आप इस सीमा को "सीमा" श्लोक के साथ सेट कर सकते हैं।

तो नोफाइल के लिए:

limit nofile 4096 4096

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.