nginx uLimit 'worker_connections खुली फ़ाइल संसाधन सीमा से अधिक है: 1024'


15

मुझे यह त्रुटि मिलती रही है nginx/error.logऔर इसकी मुझे पागल कर रही है:

8096 worker_connections exceed open file resource limit: 1024

मैंने वह सब कुछ करने की कोशिश की है जिसके बारे में मैं सोच सकता हूं और यह पता लगा सकता हूं कि यहां nginx को क्या सीमित किया गया है। क्या आप बता सकते हैं कि मैं क्या याद कर रहा हूँ?

nginx.conf यह है:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

मैंने अपने सिस्टम का यूलिमेट security/limits.confइस तरह से बदला :

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

यह अभी भी त्रुटि दिखा रहा था। इसलिए मैंने संपादन का भी प्रयास किया /etc/default/nginxऔर इस पंक्ति को जोड़ा:

ULIMIT="-n 65535"

यह अभी भी वही त्रुटि दिखा रहा है। यह पता नहीं लगा सकते कि केवल 1024 में nginx कार्यकर्ता कनेक्शन को क्या सीमित कर रहा है। क्या आप मुझे इंगित कर सकते हैं?

मैं डेबियन 7 + nginx मिला है

जवाबों:


30

worker_rlimit_nofile 65535;मुख्य संदर्भ में nginx.conf में सेट करें ।


1
बस! यह तय है। ओह आप एक रक्षक हैं। यह अब भी काम करता है जब उलीमिट मैन्युअल रूप से सेट नहीं होता है /etc/default/nginx file। बहुत बढ़िया। शुक्रिया @Xaviour
नील

1
अच्छा किया जेवियर।
डेव हॉलैंड

@Xavier ने इस त्रुटि संदेश को हटा दिया, लेकिन क्या आप बता सकते हैं कि नीचे दिए गए उत्तर में उल्लिखित के बिना यह बदलाव क्यों काम करता है? google खोजों ने ulimit को limit.conf या systcl.conf में बदलने के लिए कहा है, लेकिन मेरे लिए कोई भी काम नहीं करता है।
Bsienn

2

उपयोगकर्ता बनें:

su - nginx

सीमा की जाँच करें:

ulimit -Hn
ulimit -Sn

फाइल सिस्टम की संख्या को संपादित करें जो आपको खुला रखेगा:

vi /etc/sysctl.conf
fs.file-max = 70000

अपने परिवर्तन लोड करें:

sysctl -p

देखें कि क्या मदद मिलती है।


मैं init और havent स्थापित systemctl का उपयोग कर रहा हूँ। क्या उससे कोई अंतर पड़ेगा?
नील

जब मैंने Nginx उपयोगकर्ता को बदल दिया, तो ulimit -Hn वहां सही ढंग से दिखाई दे रहा है। मैंने तब जाँच की init.d/nginxऔर यह चेक किया कि क्या ULIMIT डिफ़ॉल्ट फ़ोल्डर में सेट है (जहाँ यह पहले से सेट है) और फिर इसका मान सेट करना है, लेकिन यह नहीं है:Check if the ULIMIT is set in /etc/default/nginx
नील

फ़ाइल-मैक्स बदलने के बाद और जैसे ही मैं sysctl -pubuntu 18.04.2 रन करता हूं, बहुत सारी फाइलें खोल देता है और बूट नहीं करता है, फिर से ओएस बूट करने के लिए सुरक्षित बूट में कोड को निकालना पड़ा।
Bsienn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.