จำนวนการเชื่อมต่อ TCP สูงสุดที่ฉันสามารถมีได้ใน Windows Server 2008 คือเท่าใด


11

ฉันต้องการมีการเชื่อมต่อมากมาย (การเชื่อมต่อเดี่ยวจากไคลเอนต์ที่แตกต่างกันมาก) เท่าที่เป็นไปได้อย่างมนุษย์ปุถุชนในเซิร์ฟเวอร์ที่ทำงานบน Windows Server 2008 เพื่อสนับสนุนแอปพลิเคชันสไตล์ดาวหาง แอปพลิเคชันเขียนด้วยภาษา C # การเชื่อมต่อจะไม่ช่างพูดพวกเขาเพียงแค่ต้องเปิด (และเปิดอยู่) การซื้อหน่วยความจำ boatloads และ CPU ที่รวดเร็วนั้นไม่ใช่ปัญหา

เท่าที่ฉันสามารถบอกได้ฉันจะ จำกัด การเชื่อมต่อแบบเปิดพร้อมกัน 65k ต่อ NIC - จำนวนพอร์ตสูงสุด ถูกต้องหรือไม่ หรือฉันสามารถเชื่อมต่อมากกว่า 65k / NIC อย่างใด? ดูเหมือนว่ามีผลิตภัณฑ์เซิร์ฟเวอร์สำหรับ Linux อย่างน้อยที่รองรับการเชื่อมต่อนับแสน พวกเขาทำเช่นนี้ได้อย่างไร

คำตอบ:


9

คุณสามารถไปได้ดีกว่าการเชื่อมต่อ 65k; เนื่องจากคุณสามารถเชื่อมต่อได้หลายพอร์ตต่อพอร์ต (เมื่อได้รับการยอมรับผู้ฟังสามารถเชื่อมต่อกับไคลเอนต์อื่นได้) ปลายด้านหนึ่งหรืออื่น ๆ จะต้องมีความแตกต่างบางอย่างโดยปกติแล้วลูกค้าเลือกพอร์ตสุ่ม โดยค่าเริ่มต้นแล้ว Windows จะ จำกัด อยู่ที่พอร์ตสุ่มเหล่านี้มากกว่า 3,000 พอร์ตเท่านั้น ดังนั้นลูกค้าทั่วไปของคุณจะทำอย่างนั้น เป็นไปได้ที่จะกำหนดค่าไคลเอนต์แตกต่างกันอย่างไรก็ตามและ * ระวังจำนวนมากถูก จำกัด ไว้มากกว่า Windows

มีการตั้งค่ารีจิสทรีที่ จำกัด จำนวนการเชื่อมต่อสูงสุดถึง 16 ล้านรายการ แต่มีปัญหาอื่น ๆ เพิ่มเติมที่มัก จำกัด ให้คุณน้อยลง (คุณสามารถเปลี่ยนค่ารีจิสตรีได้)

  • Windows ใช้ RAM ประมาณ 1KB ต่อการเชื่อมต่อ (นั่นคือ ~ 16GB สำหรับการเชื่อมต่อ 16M) และแอปของคุณจะต้องติดตามการเชื่อมต่อที่ใช้งานอยู่ (หน่วยความจำเพิ่มเติม)
  • Windows จะตรวจสอบการเชื่อมต่อที่ไม่ตอบสนองเป็นเวลา 2 ชั่วโมง ที่การเชื่อมต่อ 16M จะมีค่าประมาณ 0.5 ms; มันจะใช้แบนด์วิดท์ที่สำคัญเพียงแค่ทำการตรวจสอบเหล่านั้น

1
@evilfred: พอร์ตชั่วคราวสำหรับการเชื่อมต่อ TCP ขาออกซึ่งหมายความว่าเครื่องไคลเอนต์จะใช้พอร์ตชั่วคราวเมื่อเชื่อมต่อกับเว็บเซิร์ฟเวอร์ของคุณบนพอร์ต 80 ดังที่ Chris S ระบุเมื่อเซสชันดังกล่าวสร้างเว็บเซิร์ฟเวอร์แล้ว เชื่อมต่อกับพอร์ต 80 จากไคลเอนต์อื่น นอกจากนี้ฉันคิดว่าเขากล่าวถึงขีด จำกัด พอร์ต ephemeral ของลูกค้าเพื่อพยายามให้คำตอบของเขาครบถ้วนสมบูรณ์ขีด จำกัด พอร์ตชั่วคราวของไคลเอ็นต์นี้ไม่ใช่ข้อกังวลของคุณ แต่เป็นข้อกังวลของลูกค้า @Chris S: ฉันหวังว่าฉันจะไม่ได้ระบุสิ่งที่คุณหมายถึงผิดในคำตอบของคุณ
joeqwerty

1
ดังนั้นจึงไม่มีการ จำกัด จำนวนการเชื่อมต่อขาเข้าที่เซิร์ฟเวอร์สามารถรองรับบน IP เดียวได้ เซิร์ฟเวอร์รู้ได้อย่างไรว่าจะส่งข้อมูลที่ได้รับจากลูกค้าได้อย่างไรหากพอร์ตปลายทางถูกแชร์

1
ฉันไม่สนใจลูกค้า

1
@evilfred: แต่ละเซสชัน TCP "จัดการ" ผ่านสิ่งที่เรียกว่า 4-tuple ซึ่งเป็นไคลเอนต์ ip | พอร์ตลูกค้า <> เซิร์ฟเวอร์ ip | พอร์ตเซิร์ฟเวอร์ นั่นคือวิธีที่เซิร์ฟเวอร์จัดการทราฟฟิกระหว่างแต่ละเซสชันบนพอร์ต "ที่ใช้ร่วมกัน" เช่นพอร์ต 80 บนเว็บเซิร์ฟเวอร์
joeqwerty

1
ฉันรู้แล้ว. มีพอร์ตเซิร์ฟเวอร์ที่เป็นไปได้ 65k ต่อ IP เท่านั้น ดังนั้นจึงมีซ็อกเก็ตที่ใช้งานได้สูงสุด 65k ต่อไอพี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.