To pytanie zostało zadane wcześniej, ale nie niedawno i nie zawierało jasnej odpowiedzi.
Czy używając Socket.io, istnieje maksymalna liczba jednoczesnych połączeń, które można utrzymać, zanim będzie trzeba dodać kolejny serwer?
Czy ktoś zna jakieś aktywne środowiska produkcyjne, które używają gniazd sieciowych (szczególnie socket.io) na masową skalę? Naprawdę chciałbym wiedzieć, jaki rodzaj konfiguracji jest najlepszy dla maksymalnej liczby połączeń?
Ponieważ Websockets są zbudowane na podstawie TCP, rozumiem, że jeśli porty nie są współdzielone między połączeniami, będziesz ograniczony limitem portów 64K. Ale widziałem też raporty o połączeniach 512K przy użyciu Gretty . Więc nie wiem.
Odpowiedzi:
Ten artykuł może Ci pomóc: http://drewww.github.io/socket.io-benchmarking/
Zastanawiałem się nad tym samym pytaniem, więc napisałem mały test (przy użyciu odpytywania XHR), aby zobaczyć, kiedy połączenia zaczęły zawodzić (lub pozostawać w tyle). Stwierdziłem (w moim przypadku), że gniazda zaczęły działać przy około 1400-1800 jednoczesnych połączeniach.
Oto krótkie podsumowanie, które zrobiłem, podobne do testu, którego użyłem: https://gist.github.com/jmyrland/5535279
źródło
Próbowałem użyć socket.io na AWS, mogę maksymalnie utrzymać około 600 stabilnych połączeń.
I dowiedziałem się, że to dlatego, że socket.io najpierw używał długiego odpytywania, a później zaktualizował do Websocket.
po ustawieniu konfiguracji tak, aby korzystała tylko z Websocket, mogę utrzymać około 9000 połączeń.
Ustaw tę konfigurację po stronie klienta:
źródło
Wydaje się, że temu facetowi udało się mieć ponad milion jednoczesnych połączeń na jednym serwerze Node.js.
http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/
Nie jest dla mnie jasne, z ilu portów korzystał.
źródło
Dla + 300k jednoczesnego połączenia:
Ustaw te zmienne w
/etc/sysctl.conf
:Zmień również te zmienne w
/etc/security/limits.conf
:I wreszcie, zwiększ też bufory TCP
/etc/sysctl.conf
:więcej informacji można znaleźć pod adresem https://www.linangran.com/?p=547
źródło