2012-09-09 50 views
24

मैं uwsgi पर एक फ्लास्क ऐप चलाता हूं। मैं uwsgi प्रक्रिया का प्रबंधन करने के लिए पर्यवेक्षक का उपयोग करता हूं। मुझे यह कहते हुए लॉग मिला किuwsgi: आपका सर्वर सॉकेट सुनो बैकलॉग 100 कनेक्शन तक सीमित है

आपका सर्वर सॉकेट सुनो बैकलॉग 100 कनेक्शन तक सीमित है।

100 कनेक्शन सीमा को कैसे दूर किया जाए? मेरे चल स्क्रिप्ट के रूप में नीचे है:

[program:myapp] 
command=uwsgi --master -s /tmp/app.sock --module myapp:app --processes 2 -H /srv/sites/mysite chmod-socket 666 --enable-threads 
+0

क्या आप वाकई ऐसा करने की ज़रूरत है? यदि आप 100 कनेक्शनों का बैकलॉग जमा करते हैं, तो आपको अपनी क्षमता का कम से कम 99% उपयोग करना होगा, और फिर सीमा बढ़ाना आपको आने वाली कनेक्शनों की संख्या से पहले केवल एक न्यूनतम न्यूनतम श्वास स्थान देगा जो आप संभवतः सेवा कर सकते हैं। यह पता लगाने के लिए कि आप तेजी से अनुरोधों को कैसे पूरा कर सकते हैं, यह और अधिक उत्पादक होगा। –

उत्तर

30

ध्यान दें कि एक 100 संपर्क के "बैकलॉग सुन" मतलब यह नहीं है कि आपके सर्वर केवल 100 एक साथ (या कुल) कनेक्शन संभाल कर सकते हैं - यह बजाय संख्या पर निर्भर करता है कॉन्फ़िगर की गई प्रक्रियाओं या धागे की। सुनो बैकलॉग एक सॉकेट सेटिंग है जो कर्नेल को बताती है कि एक सुनवाई सॉकेट की सुनो कतार में बकाया संख्या (अभी तक अपरिवर्तित) कनेक्शन को सीमित कैसे करें। यदि लंबित कनेक्शन की संख्या निर्दिष्ट आकार से अधिक है, तो नए स्वचालित रूप से अस्वीकार कर दिए जाते हैं। नियमित रूप से अपने कनेक्शन की सेवा करने वाले एक फ़ंक्शनिंग सर्वर को बड़े बैकलॉग आकार की आवश्यकता नहीं होती है।

मैनुअल के अनुसार, आप -l विकल्प के साथ बैकलॉग सुनने बदल सकते हैं:

-l|--listen <num> 
     set socket listen queue to <n> (default 100, maximum is system 
     dependent) 
3

आप इस सीमा को बढ़ाने के लिए अपने/proc/sys/नेट/कोर/somaxconn में SOMAXCONN संशोधित कर सकते हैं। यह बस लिनक्स ट्यूनिंग सिस्टम है।

25

सीधे शब्दों में बदल रहा है (बढ़ती) uwsgi के एक मूल्य के लिए, -l या --listen विकल्प (के रूप में user4815162342 द्वारा बताया) का उपयोग कर सर्वर प्रारंभ करते समय बैकलॉग सुनने अधिक से अधिक तो 128 uwsgi चलाने के लिए अनुमति नहीं दी जाएगी। वहाँ भी है के रूप में यूनिक्स सॉकेट और TCP कनेक्शन पर एक प्रणाली के स्तर सीमा कतार सुन - डिफ़ॉल्ट 128 है, तो आप इसे सत्यापित कर सकते हैं (यूनिक्स सॉकेट के लिए):

cat /proc/sys/net/core/somaxconn 

uwsgi patched किया गया था, इस तरह अगर मूल्य के लिए पारित किया है कि Uwsgi शुरू करते समय --listen पैरामीटर अधिक है तो सिस्टम स्तर सीमा (लिनक्स कर्नेल सीमा) इससे आपको यूवीजीआई हार्ड विफल हो जाएगी। यदि आप सिस्टम स्तर सीमा (यानी 128) से अधिक uwsgi की सुनो कतार सीमा सेट करना चाहते हैं - आपको पहले कर्नेल की सीमा को बढ़ा देना होगा। निम्नलिखित आदेशों को क्रियान्वित किया जा सकता है:

$ echo 4096 > /proc/sys/net/core/somaxconn 
$ cat /proc/sys/net/core/somaxconn 
4096 

या

$ sysctl -w net.core.somaxconn=4096 

या, /etc/sysctl.conf को net.core.somaxconn=4096 जोड़े यह स्थायी बनने के लिए (रिबूट जीवित रहने)।