Windows Server 2008 में मेरे पास अधिकतम कितने टीसीपी कनेक्शन हो सकते हैं?


11

मैं विंडोज सर्वर 2008 पर चलने वाले सर्वर में मानवीय रूप से संभव के रूप में कई कनेक्शन (कई कनेक्शनों से एकल कनेक्शन) करना चाहूंगा, ताकि धूमकेतु-शैली के अनुप्रयोग का समर्थन किया जा सके। आवेदन C # में लिखा गया है। कनेक्शन गपशप नहीं होंगे, उन्हें बस खुले रहने (और खुले रहने) की आवश्यकता है। मेमोरी और फास्ट सीपीयू के बोटलोड्स खरीदना कोई समस्या नहीं है।

जहां तक ​​मैं बता सकता हूं, मैं एनआईसी प्रति 65k एक साथ खुले कनेक्शन तक सीमित रहूंगा - बंदरगाहों की अधिकतम संख्या। क्या यह सही है? या मैं किसी तरह 65k कनेक्शन / एनआईसी से आगे जा सकता हूं? ऐसा लगता है कि लिनक्स के लिए सर्वर उत्पाद कम से कम हैं जो सैकड़ों हजारों कनेक्शन का समर्थन करते हैं। वे ऐसा कैसे करते हैं?

जवाबों:


9

आप 65k कनेक्शन से आगे जा सकते हैं; जैसा कि आपके पास प्रति पोर्ट कई कनेक्शन हो सकते हैं (एक बार स्वीकार किए जाने पर, श्रोता दूसरे ग्राहक से जुड़ सकते हैं)। एक छोर या दूसरे में कुछ अंतर होना चाहिए, आमतौर पर ग्राहक एक यादृच्छिक पोर्ट चुनता है। डिफ़ॉल्ट रूप से विंडोज इन यादृच्छिक बंदरगाहों में से कुछ 3000 से अधिक तक सीमित है; इसलिए आपका विशिष्ट ग्राहक उस के आसपास अधिकतम होगा। हालांकि क्लाइंट को अलग तरह से कॉन्फ़िगर करना संभव है, और कई * निक्स विंडोज से कई अधिक तक सीमित हैं।

कनेक्शन की अधिकतम संख्या को 16 मिलियन तक सीमित करने वाली एक रजिस्ट्री है। लेकिन अन्य अधिक व्यावहारिक समस्याएं हैं जो आमतौर पर आपको कम (आप रजिस्ट्री मान को बदल सकते हैं) तक सीमित कर सकते हैं।

  • Windows प्रति कनेक्शन 1KB RAM लेता है (यह 16M कनेक्शन के लिए ~ 16GB है); और आपके ऐप को किसी भी तरह (अधिक मेमोरी) सक्रिय कनेक्शन का ट्रैक रखना होगा।
  • विंडोज कभी-कभी 2 घंटे के लिए गैर-उत्तरदायी कनेक्शन की भी जांच करेगा। 16M कनेक्शन पर यह प्रत्येक 0.5 एमएस के बारे में है; यह महत्वपूर्ण बैंडविड्थ सिर्फ उन जाँच कर रही होगी।

1
@evilfred: ephemeral port, TCP कनेक्शन के आउटगोइंग के लिए हैं, जिसका अर्थ है कि क्लाइंट मशीन एक ephemeral port का उपयोग करेगी जब यह पोर्ट 80 पर आपके वेब सर्वर से जुड़ता है। जैसा कि क्रिस S ने कहा है, एक बार उस सत्र के स्थापित होने के बाद वेब सर्वर दूसरे को स्थापित करने में सक्षम होता है। एक अलग क्लाइंट से पोर्ट 80 पर कनेक्शन। इसके अलावा, मुझे लगता है कि उसने अपने उत्तर में संपूर्ण होने की कोशिश में ग्राहक की अल्पकालिक बंदरगाह सीमा का उल्लेख किया है, यह ग्राहक अल्पकालिक बंदरगाह सीमा आपकी चिंता नहीं है, यह ग्राहकों की चिंता है। @ क्रिस एस: मुझे आशा है कि मैं गलत जवाब नहीं दे रहा हूं कि आपके जवाब में आपका क्या मतलब है।
जोकेवेटी

1
तो इनबाउंड कनेक्शनों की संख्या पर कोई वास्तविक सीमा नहीं है जो एक सर्वर एकल आईपी पर समर्थन कर सकता है? गंतव्य पोर्ट साझा किए जाने पर सर्वर को यह कैसे पता चलता है कि उसे ग्राहक को कहां से डेटा भेजना है?

1
मैं ग्राहक के बारे में परवाह नहीं है।

1
@evilfred: प्रत्येक टीसीपी सत्र को "प्रबंधित" किया जाता है जिसे 4-ट्यूपल कहा जाता है, जो क्लाइंट आईपी है। क्लाइंट पोर्ट <> सर्वर आईपी | सर्वर पोर्ट। यह है कि सर्वर प्रत्येक सत्र के बीच "साझा" पोर्ट पर ट्रैफ़िक प्रबंधित करता है, जैसे कि वेब सर्वर पर पोर्ट 80।
जोकेवेटी

1
मुझे पता है। प्रति आईपी केवल 65k संभावित सर्वर पोर्ट हैं। इसलिए प्रति आईपी में अधिकतम 65k सक्रिय सॉकेट है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.