2013-07-03 25 views

Trả lời

37

Cập nhật trả lời

Câu trả lời ngắn: yes, nhưng nó tốn kém.

Long trả lời:

Câu hỏi này không phải là duy nhất để WebSockets từ WebSockets về cơ bản TCP socket tồn tại lâu dài với một cái bắt tay HTTP-like và khung tối thiểu cho các tin nhắn.

Câu hỏi thực sự là: một máy chủ có thể xử lý 1.000.000 kết nối ổ cắm đồng thời và tài nguyên máy chủ này sẽ tiêu thụ không? Câu trả lời là phức tạp bởi một số yếu tố, nhưng 1.000.000 kết nối socket hoạt động đồng thời là có thể cho một hệ thống có kích thước phù hợp (rất nhiều CPU, RAM và mạng nhanh) và với một hệ thống máy chủ điều chỉnh và phần mềm máy chủ tối ưu.

Số lượng kết nối không phải là vấn đề chính (chủ yếu chỉ là câu hỏi điều chỉnh hạt nhân và đủ bộ nhớ), đó là xử lý và gửi/nhận dữ liệu đến/từ mỗi kết nối đó. Nếu các kết nối đến được trải ra trong một thời gian dài, và chúng hầu như không hoạt động hoặc không thường xuyên gửi các đoạn dữ liệu tĩnh nhỏ, bạn có thể nhận được nhiều hơn thậm chí 1.000.000 kết nối đồng thời. Tuy nhiên, ngay cả trong những điều kiện (kết nối chậm mà chủ yếu là nhàn rỗi), bạn vẫn sẽ gặp sự cố với mạng, hệ thống máy chủ và thư viện máy chủ không được định cấu hình và được thiết kế để xử lý số lượng lớn kết nối.

Xem câu trả lời của Alessandro Alinone về sử dụng tài nguyên gần đúng cho 500.000 kết nối.

Dưới đây là một số tài nguyên áp dụng cũ nhưng vẫn để đọc về cách bạn sẽ cấu hình máy chủ của bạn và viết phần mềm máy chủ của bạn để hỗ trợ số lượng lớn các kết nối:

91

Trên các hệ thống ngày nay, việc xử lý 1 triệu kết nối TCP đồng thời không phải là vấn đề.

Tôi có thể khẳng định rằng dựa trên các thử nghiệm của riêng mình (tiết lộ đầy đủ: Tôi là CTO tại Lightstreamer).

Chúng tôi đã phải chứng minh nhiều lần, với một số khách hàng của chúng tôi, rằng 1 triệu kết nối có thể đạt được trên một hộp duy nhất (và không nhất thiết phải là một máy siêu quái vật). Nhưng hãy để tôi tóm tắt lại cấu hình mà chúng tôi đã thử nghiệm các kết nối đồng thời 500K, vì đây là một thử nghiệm gần đây hơn được thực hiện trên Amazon EC2.

Chúng tôi đã cài đặt Lightstreamer Server (máy chủ WebSocket, trong số những thứ khác) trên một phiên bản m2.4xlarge. Điều này có nghĩa là 8 lõi và 68,4 bộ nhớ GiB.

Chúng tôi đã khởi chạy 11 máy khách để tạo 500.000 kết nối đồng thời tới Máy chủ Lightstreamer. Thử nghiệm đã được cấu hình sao cho tổng lượng thông lượng ra ngoài từ máy chủ là 90.000 bản cập nhật/giây, dẫn đến băng thông ra ngoài tối đa 450 Mbit/s.

Máy chủ không bao giờ sử dụng hơn 13 GiB RAM và CPU ổn định khoảng 60%.

Với ít nhất 30 GiB RAM, bạn có thể xử lý 1 triệu ổ cắm đồng thời. CPU cần thiết phụ thuộc vào thông lượng dữ liệu bạn cần.

+4

Tôi giả định đây là một số hương vị của Linux. Bạn có thể chia sẻ thông tin bổ sung về cách hạt nhân được điều chỉnh không? max mô tả tập tin/tcp kích thước cửa sổ vv? – quixver

+9

Đó là vani Amazon Linux. Mô tả tệp tối đa đã được tăng lên. Bộ đệm gửi TCP đã giảm xuống còn 1600 byte (mặc định bởi Lightstreamer, mặc dù nó có thể được điều chỉnh bằng tay). MSS là mặc định. –

+0

Tính năng này có hoàn toàn miễn phí hoặc cần một khoản phí để sử dụng không? –

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