1,000,000 वेबसोकेट को खुला रखने के लिए कितने सिस्टम संसाधन होंगे? [बन्द है]


122

Websocket अच्छा है, लेकिन क्या यह 1,000,000 समवर्ती कनेक्शनों को संभालने में सक्षम होगा?
1,000,000 वेबसोकेट को खुला रखने के लिए कितने सिस्टम संसाधन होंगे?

जवाबों:


65

अद्यतन उत्तर

संक्षिप्त उत्तर : हाँ, लेकिन यह महंगा है।

लंबे उत्तर :

यह सवाल WebSockets के लिए अद्वितीय नहीं है क्योंकि WebSockets मौलिक रूप से लंबे समय तक रहने वाले TCP सॉकेट हैं जिनमें HTTP-जैसे हैंडशेक और संदेशों के लिए न्यूनतम फ़्रेमिंग है।

असली सवाल यह है: क्या एक एकल सर्वर 1,000,000 एक साथ सॉकेट कनेक्शन को संभाल सकता है और यह किस सर्वर संसाधनों का उपभोग करेगा? उत्तर कई कारकों से जटिल है, लेकिन ठीक आकार प्रणाली (सीपीयू, रैम और फास्ट नेटवर्किंग के बहुत सारे) और एक ट्यून्ड सर्वर सिस्टम और अनुकूलित सर्वर सॉफ़्टवेयर के साथ 1,000,000 एक साथ सक्रिय सॉकेट कनेक्शन संभव है।

कनेक्शन की संख्या प्राथमिक समस्या नहीं है (यह ज्यादातर केवल कर्नेल ट्यूनिंग और पर्याप्त मेमोरी का सवाल है), यह उन सभी कनेक्शनों से / में डेटा को संसाधित करना और भेजना / प्राप्त करना है। यदि आने वाले कनेक्शन लंबी अवधि में फैले हुए हैं, और वे ज्यादातर बेकार हैं या स्थिर डेटा के छोटे हिस्से भेज रहे हैं तो आप शायद 1,000,000 से भी अधिक एक साथ कनेक्शन प्राप्त कर सकते हैं। हालाँकि, यहां तक ​​कि उन परिस्थितियों में (धीमे कनेक्शन जो अधिकतर निष्क्रिय हैं) आप अभी भी नेटवर्क, सर्वर सिस्टम और सर्वर लाइब्रेरी के साथ समस्याओं में चलेंगे जो बड़ी संख्या में कनेक्शन को संभालने के लिए कॉन्फ़िगर और डिज़ाइन नहीं किए गए हैं।

500,000 कनेक्शन के लिए अनुमानित संसाधन उपयोग के बारे में एलेसेंड्रो एलिनोन का उत्तर देखें।

यहां कुछ पुराने लेकिन अभी भी लागू संसाधन पढ़ने के लिए हैं कि आप अपने सर्वर को कैसे कॉन्फ़िगर करेंगे और बड़ी संख्या में कनेक्शन का समर्थन करने के लिए अपना सर्वर सॉफ्टवेयर लिखेंगे:


1
एकल JVM पर लगभग 12 मिलियन सॉकेट कनेक्शन संभव है। देखें कि उन्होंने यह कैसे किया है। mrotaru.wordpress.com/2013/10/10/…
जैक्स कोअर्स

@JacquesKoorts thx
BG BRUNO

159

आज के सिस्टम पर, 1 मिलियन समवर्ती टीसीपी कनेक्शन को संभालना कोई समस्या नहीं है।

मैं अपने स्वयं के परीक्षणों (पूर्ण प्रकटीकरण: मैं लाइटस्ट्रीमर में सीटीओ हूं) के आधार पर पुष्टि कर सकता हूं।

हमें अपने कुछ ग्राहकों को कई बार प्रदर्शित करना पड़ा, कि 1 मिलियन कनेक्शन एक बॉक्स पर पहुंच सकते हैं (और जरूरी नहीं कि यह एक सुपर-मॉन्स्टर मशीन हो)। लेकिन मुझे कॉन्फ़िगरेशन को फिर से सेट करना है जहां हमने 500K समवर्ती कनेक्शन का परीक्षण किया है, क्योंकि यह अमेज़ॅन ईसी 2 पर हाल ही में किया गया अधिक परीक्षण है।

हमने लाइटस्ट्रीमर सर्वर (जो अन्य बातों के अलावा एक वेबसर्केट सर्वर है) को एक एम 2.4xlarge उदाहरण पर स्थापित किया है। इसका मतलब 8 कोर और 68.4 GiB मेमोरी है।

हमने लाइटस्ट्रीमर सर्वर से 500,000 समवर्ती कनेक्शन बनाने के लिए 11 क्लाइंट मशीनें लॉन्च कीं। परीक्षण को कॉन्फ़िगर किया गया था ताकि सर्वर से कुल आउटबाउंड थ्रूपुट 90,000 अपडेट / एस था, जिसके परिणामस्वरूप 450 Mbit / s आउटबाउंड बैंडविड्थ की चोटियां थीं।

सर्वर ने कभी भी 13 GB से अधिक RAM का उपयोग नहीं किया और CPU लगभग 60% स्थिर था।

कम से कम 30 GiB RAM के साथ आप 1 मिलियन समवर्ती कुर्सियां ​​संभाल सकते हैं। सीपीयू की जरूरत उस डेटा थ्रूपूट पर निर्भर करती है जिसकी आपको जरूरत है।


7
मैं मान रहा हूं कि यह कुछ स्वाद था। क्या आप इस बारे में अतिरिक्त जानकारी साझा कर सकते हैं कि कर्नेल को कैसे ट्यून किया गया था? अधिकतम फ़ाइल डिस्क्रिप्टर / टीसीपी विंडो आकार आदि?
क्विक्सर

14
यह वेनिला अमेज़ॅन लिनक्स था। अधिकतम फ़ाइल विवरणक बढ़ाए गए थे। टीसीपी भेजें बफर को 1600 बाइट्स तक घटा दिया गया था (लाइटस्ट्रीमर द्वारा डिफ़ॉल्ट रूप से किया गया था, हालांकि इसे मैन्युअल रूप से ट्यून किया जा सकता है)। MSS डिफ़ॉल्ट था।
एलेसेंड्रो एलिनोन

क्या यह नरम पूरी तरह से मुक्त है या इसका उपयोग करने के लिए कुछ शुल्क की आवश्यकता है?
Avtandil Kavrelishvili

@AvtandilKavrelishvili: नि: शुल्क संस्करण और सशुल्क संस्करण दोनों हैं।
एलेसेंड्रो एलिनोन

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