Số lượng kết nối TCP tối đa tôi có thể có trong Windows Server 2008 là bao nhiêu?


11

Tôi muốn có càng nhiều kết nối (các kết nối đơn từ nhiều máy khách khác nhau) càng tốt trong một máy chủ chạy trên Windows Server 2008, để hỗ trợ ứng dụng kiểu Comet. Ứng dụng này được viết bằng C #. Các kết nối sẽ không được trò chuyện, chúng chỉ cần được mở (và duy trì mở). Mua thuyền tải bộ nhớ và CPU nhanh không phải là vấn đề.

Theo như tôi có thể nói, tôi sẽ bị giới hạn ở mức 65k kết nối mở đồng thời trên mỗi NIC - số lượng cổng tối đa. Nó thật sự đúng? Hoặc tôi có thể vượt quá 65k kết nối / NIC bằng cách nào đó? Có vẻ như có các sản phẩm máy chủ cho Linux ít nhất hỗ trợ hàng trăm ngàn kết nối. Làm thế nào để họ làm điều này?

Câu trả lời:


9

Bạn có thể đi xa hơn 65k kết nối; vì bạn có thể có nhiều kết nối trên mỗi cổng (một khi được chấp nhận, người nghe có thể kết nối với một máy khách khác). Một đầu này hay đầu kia phải có một số khác biệt, thường là máy khách chọn một cổng ngẫu nhiên. Windows theo mặc định giới hạn ở một vài trong số hơn 3000 cổng ngẫu nhiên này; vì vậy khách hàng tiêu biểu của bạn sẽ tối đa xung quanh đó. Tuy nhiên, có thể định cấu hình ứng dụng khách khác nhau và nhiều * nix bị giới hạn ở nhiều hơn so với Windows.

Có cài đặt đăng ký giới hạn số lượng kết nối tối đa là 16 triệu. Nhưng có những vấn đề thực tế khác thường sẽ giới hạn bạn ít hơn (bạn có thể thay đổi giá trị đăng ký).

  • Windows chiếm khoảng 1KB RAM cho mỗi kết nối (Đó là ~ 16GB cho các kết nối 16M); và ứng dụng của bạn cũng sẽ phải theo dõi các kết nối đang hoạt động bằng cách nào đó (thêm bộ nhớ).
  • Windows cũng sẽ kiểm tra các kết nối không phản hồi trong 2 giờ. Ở 16M kết nối, khoảng 0,5 ms; nó sẽ chiếm băng thông đáng kể khi thực hiện các kiểm tra đó.

1
@evilfred: cổng phù du dành cho các kết nối TCP đi, nghĩa là máy khách sẽ sử dụng cổng phù du khi kết nối với máy chủ web của bạn trên cổng 80. Như Chris S đã nêu, khi phiên đó được thiết lập, máy chủ web có thể thiết lập một phiên kết nối trên cổng 80 từ một máy khách khác. Ngoài ra, tôi nghĩ rằng anh ấy đã đề cập đến giới hạn cổng phù du của khách hàng trong việc cố gắng hết sức trong câu trả lời của anh ấy, giới hạn cổng phù du của khách hàng này không phải là mối quan tâm của bạn, đó là mối quan tâm của khách hàng. @Chris S: Tôi hy vọng tôi không nói sai ý của bạn trong câu trả lời của bạn.
joeqwerty

1
Vì vậy, không có giới hạn thực sự về số lượng kết nối gửi đến mà một máy chủ có thể hỗ trợ trên một IP? Làm thế nào để máy chủ biết nơi gửi dữ liệu mà nó nhận được từ máy khách nếu cổng đích được chia sẻ?

1
Tôi không quan tâm đến khách hàng.

1
@evilfred: Mỗi phiên TCP được "quản lý" thông qua cái được gọi là 4-tuple, đó là ip máy khách | cổng máy khách <> máy chủ ip | cổng máy chủ. Đó là cách máy chủ quản lý lưu lượng giữa mỗi phiên trên một cổng "chia sẻ", chẳng hạn như cổng 80 trên máy chủ web.
joeqwerty

1
Tôi biết điều đó. Chỉ có 65k cổng máy chủ có thể trên mỗi IP. Do đó, có tối đa 65k ổ cắm hoạt động cho mỗi IP.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.