लिनक्स पर सॉकेट की अधिकतम संख्या


12

ऐसा लगता है कि सर्वर ~ 32720 सॉकेट्स पर सीमित है ... मैंने इस सीमा को बढ़ाने के लिए हर ज्ञात परिवर्तनशील बदलाव की कोशिश की है। लेकिन सर्वर 32720 खुले सॉकेट में सीमित है, भले ही अभी भी मुफ्त मेमोरी का 4 जी है और 80% निष्क्रिय सीपीयू ...

यहाँ विन्यास है

~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63931
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 798621
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 2048
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63931
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

net.netfilter.nf_conntrack_max = 999999
net.ipv4.netfilter.ip_conntrack_max = 999999
net.nf_conntrack_max = 999999

कोई विचार ? (यह सवाल जैसा कि स्टैक-ओवरफ्लो पर पूछा गया है जिसमें अब तक कोई भाग्य नहीं है)


serverfault.com/questions/10852/... कुछ अच्छा डेटा है
sysadmin1138


मैंने पोस्ट करने से पहले उन धागों की जाँच की, जिनमें कोई किस्मत नहीं थी
TheSquad

जवाबों:


8

मैंने पाया है कि सब कुछ सीमित था:

max_map_count

प्रत्येक उत्तर देने वाले का धन्यवाद !


तो सॉकेट एक लाल हेरिंग थे। जानकार अच्छा लगा।
pjz

आप इसे कैसे बदलेंगे? क्या आपके पास एक डॉक्टर है जो बताता है कि यह क्या करता है?
रयान


2

आप इस एक के लिए गलत जगह देख रहे हैं; आप एक उपयोगकर्ता सीमा में नहीं चल रहे हैं, आप एक सिस्टम सीमा में चल रहे हैं जो आमतौर पर 32-बिट सिस्टम पर 2 की 15 वीं शक्ति है, जो कि मैं आपके सिस्टम के होने का अनुमान लगा रहा हूं। चेक:

 % cat /proc/sys/kernel/pid_max 
 32768
 %

लेकिन आप उसे भी बदल सकते हैं; 32-बिट मशीन पर एक पूर्ण ऊपरी सीमा के रूप में 2 ** 22 होगा, इसलिए:

% sudo bash -c 'echo 4194303 > /proc/sys/kernel/pid_max'
%

मुझे यह जानने में दिलचस्पी होगी कि आप कैसे जाते हैं।


pid_max पहले से ही 999999 पर है
TheSquad

1

यदि आप वास्तव में उन अधिकतम सॉकेट को देखने का प्रयास कर रहे हैं जिनके साथ आप कनेक्शन खोल सकते हैं, तो आप बिल्ली / प्रूफ़ / sys / net / ipv4 / ip_local_port_range देख सकते हैं; यह बंदरगाहों की वह सीमा है जो कर्नेल आउटबाउंड सॉकेट के लिए उपयोग करेगा, और इसमें आपके वितरण के आधार पर अलग-अलग चूक हैं। इसे '1024 65535' की तरह सेट करने के बारे में विस्तृत है, जैसा कि आप इसे प्राप्त कर सकते हैं; देखें कि क्या यह चीजों में मदद करता है।


ip_local_port_range पहले से ही 1024 65535 पर है।
TheSquad

0

मुझे खेद है अगर कुछ ऐसा ही सूत्र में कहा जा रहा है, लेकिन मेरे पास अब उन्हें पढ़ने का समय नहीं है: <

पहली नज़र के साथ मैं देख रहा हूँ कि आपके द्वारा उल्लेखित सॉकेट की संख्या अधिकतम उपयोगकर्ता प्रक्रियाओं का लगभग आधा है। जैसा कि मैं अनुमान लगा सकता हूं कि आपके पास प्रत्येक सॉकेट के लिए एक अलग प्रक्रिया है (संभवतः आप एक सर्वर चलाते हैं या ऐसा कुछ)

अगली बार जब आप सॉकेट की सीमा तक पहुँचते हैं, तो आप प्रक्रिया की संख्या की जाँच कर सकते हैं।

बस एक विचार, मुझे नहीं पता कि यह मदद करता है।


नहीं, ऐसा नहीं है: # ps -ef | grep -c 'root' = 147
TheSquad

क्या वह नियंत्रित वातावरण में है? क्या आप कुछ जाँच कर सकते हैं? उदाहरण के लिए, हर अनुरोध के साथ कितनी प्रक्रियाएँ बनाई जाती हैं? इसके अलावा, सर्वर की प्राथमिकता क्या है? यदि आप इसे त्यागते हैं तो क्या यह कुछ बदलता है? यदि नहीं, तो मुझे लगभग यकीन है कि आप या तो प्रक्रिया की सीमा या किसी प्रक्रिया के अंदर थ्रेड की सीमा तक पहुँचते हैं:>
निकोलाइडिस फोटिस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.