Websocket là tốt, nhưng nó có thể xử lý 1.000.000 kết nối đồng thời không?
Có bao nhiêu tài nguyên hệ thống sẽ được giữ để giữ 1.000.000 websocket mở?Có bao nhiêu tài nguyên hệ thống sẽ được tổ chức để giữ 1.000.000 websocket mở?
Trả lời
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:
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.
- 1. Hệ thống tài nguyên độc lập nền tảng (như hệ thống tài nguyên Qt)
- 2. Tổ chức và cấu trúc tài nguyên dự án Xcode
- 3. Tài nguyên hệ thống Android hữu ích
- 4. Làm thế nào để có được id tài nguyên bảng chuỗi của một tổ chức Delphi?
- 5. Tổ chức bao gồm
- 6. Làm cách nào để giữ tài nguyên WPF của bạn được tổ chức trên các dự án lớn?
- 7. PowerShell sẽ giữ bao nhiêu đầu ra công việc nếu tôi không nhận được?
- 8. Android: Cách tổ chức tài nguyên dự án?
- 9. Tôi có thể tổ chức các sự kiện thay đổi xương sống sâu bao nhiêu?
- 10. Nút ca cao sẽ mở trang Tùy chọn hệ thống
- 11. Hệ thống để tổ chức các chương trình Ruby đa tệp?
- 12. Tài nguyên hệ thống OleDbException Đã vượt quá
- 13. Tôi có thể tạo bao nhiêu phiên bản System.Timers.Timer? Tôi có thể mở rộng bao xa?
- 14. Giữ các tài nguyên i18n được đồng bộ hóa
- 15. Chuỗi sẽ mất bao nhiêu byte?
- 16. I18n và lịch - Hệ thống lịch có thể giữ nguyên như Lịch Gregorian không?
- 17. Hệ thống quản lý tài liệu nguồn mở trong .net?
- 18. Quản lý dự án có nên hỏi sẽ mất bao nhiêu thời gian để thực hiện một số chức năng?
- 19. Bao nhiêu tài nguyên sẽ tải xuống trình duyệt từ một miền nhất định tại một thời điểm?
- 20. Có bao nhiêu đối tượng được tạo
- 21. Tôi cần có bao nhiêu byte để giữ N chữ số thập phân
- 22. Haskell: "bao nhiêu" của một loại chức năng sẽ nhận được? và tránh hoàn toàn "tái thiết"
- 23. Khóa bị sâu bao nhiêu?
- 24. Có bao nhiêu Tùy chọn được chia sẻ quá nhiều?
- 25. Có bao nhiêu tham số chức năng quá nhiều?
- 26. Tôi nên tổ chức nhiều máy chủ Express trên cùng một hệ thống như thế nào?
- 27. Có bao nhiêu LINQ?
- 28. Kế hoạch heroku có bao nhiêu không gian đĩa?
- 29. có bao nhiêu bản sao của hàm bên trong sẽ được tạo
- 30. Cách tốt nhất để tổ chức các khóa tài nguyên i18n là gì?
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
Đó 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. –
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? –