2010-02-28 58 views

Trả lời

26

Điều này phụ thuộc một phần vào hệ điều hành của bạn.

Tuy nhiên, không có giới hạn trên một cổng cụ thể. Tuy nhiên, có một giới hạn về số lượng các kết nối đồng thời, thường bị giới hạn bởi số lượng các bộ mô tả tập tin mà hạt nhân hỗ trợ (ví dụ 2048). Điều cần lưu ý là kết nối TCP là duy nhất và kết nối là một cặp điểm cuối (địa chỉ IP và cổng cục bộ và từ xa) vì vậy không quan trọng nếu 1000 kết nối kết nối với cùng một cổng trên máy chủ bởi vì các kết nối đều là duy nhất bởi vì đầu kia là khác nhau.

Giới hạn khác cần lưu ý là máy chỉ có thể thực hiện khoảng 64K kết nối gửi đi hoặc giới hạn hạt nhân trên kết nối, tùy theo mức nào thấp hơn. Đó là vì cổng là một số 16 bit không dấu (0-65535) và mỗi kết nối gửi đi sử dụng một trong các cổng đó.

Bạn có thể mở rộng điều này bằng cách cung cấp cho máy địa chỉ IP bổ sung. Mỗi địa chỉ IP là một không gian địa chỉ khác của địa chỉ 64K.

+0

Một điều cần lưu ý khác là phạm vi cổng tạm thời cho phía máy khách. –

+0

Khi tiếp tục tìm kiếm, tôi truy cập vào liên kết dưới đây để cung cấp một số điểm tốt về kern.maxfiles khi mỗi tệp mở, socket hoặc FIFO sử dụng một bộ mô tả tệp và máy chủ sản xuất quy mô lớn có thể dễ dàng yêu cầu hàng nghìn mô tả tệp, tùy thuộc vào loại và số lượng dịch vụ chạy đồng thời - http://www.freebsd.org/doc/handbook/configtuning-kernel-limits.html Liên kết nhanh có đóng vai trò không? Tôi nghĩ, điều đó cũng đóng một vai trò quan trọng ở đây. –

+0

Vì vậy, có vẻ như mô tả tập tin là một trong những yếu tố chính xác định số lượng kết nối đồng thời trên một cổng cụ thể trong một máy chủ trong Linux. Liên kết dưới đây dường như truyền đạt phương pháp để tăng số lượng mô tả tệp tối đa trong Linux - http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/ http://www.cs.uwaterloo.ca/~brecht/servers/openfiles.html –

3

Nhiều hơn bạn quan tâm. Hay đúng hơn.

  • Hơn mã của bạn thực sự có thể xử lý (vì lý do khác)
  • Hơn khách hàng của bạn thực sự sẽ làm cho
  • Hơn bạn có thể xử lý trên một hộp duy nhất cho lý do hiệu suất
  • Hơn bạn cần trên một hộp duy nhất vì cân bằng tải của bạn sẽ phân phối chúng trong một số vì lý do khả dụng, tuy nhiên,

Tôi có thể đảm bảo rằng nó lớn hơn tất cả. Có những hạn chế khả năng mở rộng với số lượng lớn các ổ cắm, có thể được làm việc xung quanh (Google cho vấn đề c10k). Trong thực tế, có thể có hơn 10.000 ổ cắm được sử dụng một cách hữu ích bởi một tiến trình duy nhất trong Linux. Nếu bạn có nhiều quy trình cho mỗi máy chủ, bạn có thể tăng lên một lần nữa.

Không cần thiết phải sử dụng một cổng duy nhất, vì bộ cân bằng tải chuyên dụng của bạn sẽ có thể xoay vòng nhiều cổng nếu cần.

Nếu bạn đang chạy dịch vụ cho nhiều 10 trong số 1000 quy trình của khách hàng, có thể điều quan trọng là nó vẫn hoạt động, do đó bạn sẽ cần một số máy chủ cho redunancy ANYWAY. Do đó, bạn sẽ không gặp sự cố khi triển khai thêm một vài máy chủ nữa.

+1

Thú vị khi biết rằng các bộ cân bằng tải sẽ làm vòng xoay của các cổng máy chủ! –

+0

Người ta có thể dễ dàng sử dụng hàng trăm nghìn (có sẵn) ổ cắm trên một hệ thống duy nhất (Linux). Chắc chắn tất cả những cái có sẵn. Bạn đang đưa ra các giả định không chính xác. – lucian303

-2

Tôi đã thực hiện kiểm tra trên Windows, thực hiện nhiều kết nối vòng lặp trên một ổ cắm. Windows từ chối phân bổ bất cứ điều gì sau khi đánh dấu 16372.

+6

Kết nối vòng lặp có những hạn chế riêng. Đối với một, hệ điều hành của khách hàng thường sẽ chỉ sử dụng các cổng tạm thời trong một phạm vi nhất định (và do đó, sẽ chỉ tạo ra một số lượng nhất định của chúng). Đối với một kết nối khác, 127.0.0.1 (địa chỉ loopback) thường sẽ sử dụng cùng một địa chỉ nguồn (cụ thể là 127.0.0.1) cho tất cả chúng. Bạn sẽ phải ràng buộc rõ ràng kết thúc cục bộ với một địa chỉ khác để làm việc xung quanh những giới hạn này. – cHao

Các vấn đề liên quan