Câu trả lời:
Cập nhật câu trả lời
Câu trả lời ngắn gọn : có, nhưng nó đắt.
Câu trả lời dài :
Câu hỏi này không phải là duy nhất đối với WebSockets vì WebSockets về cơ bản là các socket TCP tồn tại lâu dài với kiểu bắt tay giống HTTP và tối thiểu hóa khung cho các thông báo.
Câu hỏi thực sự là: một máy chủ duy nhất có thể xử lý 1.000.000 kết nối socket đồng thời và điều này sẽ tiêu tốn tài nguyên máy chủ nào? 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 ổ cắm hoạt động đồng thời là có thể cho một hệ thống có kích thước phù hợp (nhiều CPU, RAM và mạng nhanh) và với một hệ thống máy chủ được điều chỉnh và phần mềm máy chủ được tối ưu hóa.
Số lượng kết nối không phải là vấn đề chính (chủ yếu chỉ là vấn đề điều chỉnh hạt nhân và đủ bộ nhớ), mà là việc 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 dài 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 phần nhỏ dữ liệu tĩnh thì bạn có thể nhận được cao hơn nhiều 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 hầu như không hoạt động), 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à 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ề việc 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 cũ hơn nhưng vẫn có thể áp dụng để đọc về cách bạn định cấu hình máy chủ và viết phần mềm máy chủ để hỗ trợ số lượng lớn kết nối:
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à một vấn đề.
Tôi có thể khẳng định điều đó dựa trên các thử nghiệm của chính chúng tôi (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 rằng có thể đạt được 1 triệu kết nối trên một hộp duy nhất (và không nhất thiết phải là một cỗ 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 500K kết nối đồng thời, 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 Máy chủ Lightstreamer (là một 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à bộ nhớ 68,4 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 định cấu hình để tổng thông lượng đầu ra từ máy chủ là 90.000 bản cập nhật / s, dẫn đến băng thông đầu ra đạt đỉnh là 450 Mbit / s.
Máy chủ không bao giờ sử dụng quá 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.