net.core.somaxconn
उच्च मूल्यों पर सेट करना केवल हाईलोड किए गए सर्वरों पर आवश्यक है जहां नया कनेक्शन दर इतना अधिक / फट गया है कि बीएसडी में 128 (50% अधिक: 128 backlog
+ 64 half-open
) होने के बावजूद अभी तक स्वीकृत कनेक्शन को सामान्य नहीं माना जाता है। या जब आपको किसी एप्लिकेशन के लिए "सामान्य" की परिभाषा सौंपनी होगी।
कुछ प्रशासक net.core.somaxconn
अपनी सेवाओं के साथ समस्याओं को छिपाने के लिए उच्च का उपयोग करते हैं, इसलिए उपयोगकर्ता की दृष्टिकोण प्रक्रिया से यह कनेक्शन बाधित / टाइमआउट ( net.ipv4.tcp_abort_on_overflow
लिनक्स द्वारा नियंत्रित ) के बजाय एक विलंबता स्पाइक की तरह दिखाई देगा ।
listen(2)
मैनुअल कहता है - net.core.somaxconn
एक आवेदन के लिए केवल ऊपरी सीमा कार्य करता है जो कुछ छोटा चुनने के लिए स्वतंत्र है (आमतौर पर ऐप के कॉन्फ़िगरेशन में सेट होता है)। हालांकि कुछ एप्स का उपयोग केवल listen(fd, -1)
सिस्टम द्वारा अनुमत अधिकतम मान के लिए बैकलॉग सेट करने के लिए किया जाता है।
वास्तविक कारण या तो कम प्रसंस्करण दर है (उदाहरण के लिए एकल थ्रेडेड ब्लॉकिंग सर्वर) या कार्यकर्ता थ्रेड्स / प्रक्रियाओं की अपर्याप्त संख्या (जैसे बहु प्रक्रिया / थ्रेडेड ब्लॉकिंग सॉफ्टवेयर जैसे apache
/ tomcat
)
पुनश्च। कभी-कभी यह तेजी से विफल होने के लिए बेहतर होता है और उपयोगकर्ता को इंतजार करने के बजाय लोड-बैलेंसर को काम करने (रिट्रीट) करने देता है - इस उद्देश्य के लिए हम net.core.somaxconn
किसी भी मूल्य को सेट करते हैं , और एप्लिकेशन बैकलॉग को उदा 10
और सीमा net.ipv4.tcp_abort_on_overflow
को 1 पर सेट करते हैं।
पी पी एस। लिनक्स कर्नेल के पुराने संस्करणों में somaxcon
यह 16 निचले बिट्स (यानी कास्टिंग मूल्य uint16_t
) के लिए मूल्य को कम करने का बुरा बग है , इसलिए उस मूल्य को अधिक से अधिक करना 65535
भी खतरनाक हो सकता है। अधिक जानकारी के लिए देखें: http://patchwork.ozlabs.org/patch/255460/
यदि आप लिनक्स के सभी बैकलॉग इंटर्नल के बारे में अधिक जानकारी में जाना चाहते हैं, तो बेझिझक पढ़ें:
लिनक्स में टीसीपी बैकलॉग कैसे काम करता है ।