2013-04-08 15 views
71

To pytanie zostało zadane wcześniej, ale nie ostatnio, a nie z jasną odpowiedzią.Maksymalne równoczesne połączenia Socket.IO

Korzystanie z Socket.io, czy istnieje maksymalna liczba równoczesnych połączeń, które można utrzymywać przed dodaniem kolejnego serwera?

Czy ktoś wie o aktywnych środowiskach produkcyjnych, które używają gniazd internetowych (szczególnie socket.io) na masową skalę? Naprawdę chciałbym wiedzieć, jaki rodzaj konfiguracji jest najlepszy dla maksymalnych połączeń?

Ponieważ Websockets są zbudowane na TCP, rozumiem, że jeśli porty nie są współużytkowane przez połączenia, będziecie ograniczeni limitem portów 64K. Ale widziałem również raporty 512K connections using Gretty. Więc nie wiem.

+2

[Trello] (https://trello.com/) używają gniazd na masową skalę (konkretnie socket.io). – James

+0

Czytałem, że Trello musiał zmodyfikować kod Socket.io z powodu 10 000 limitu połączeń i był w stanie utrzymać "wiele tysięcy" połączeń przed dodaniem serwerów. Nadal jest ogromna przepaść między tym a 512K innych systemów serwerowych. – Andrew

+1

Ile lat ma ten artykuł? Trello niedawno osiągnął ponad milion aktywnych użytkowników miesięcznie, więc wyobrażam sobie, że działają teraz ponad 10 000 aktywnych gniazd. [Trello używa Redisa] (http://stackoverflow.com/questions/8579336/how-is-redis-used-in-trello) by usiąść na szczycie socket.io dla skalowalności – James

Odpowiedz

47

Ten artykuł może pomóc Ci w drodze: http://drewww.github.io/socket.io-benchmarking/

zastanawiałem się to samo pytanie, więc skończyło się na piśmie mały test (używając XHR-odpytywanie), aby zobaczyć podczas połączenia rozpoczął się niepowodzeniem (lub zaległości). Znalazłem (w moim przypadku), że gniazda zaczęły działać przy około 1400-1800 współbieżnych połączeniach.

Jest to krótki istota zrobiłem podobny do testu użyłem: https://gist.github.com/jmyrland/5535279

+3

Rozumiem, że jest to starszy temat, ale znalazłem go pierwszy, gdy szukając odpowiedzi na moje pytanie i ostatecznie okazało się pomocne: https://rtcamp.com/tutorials/linux/increase-open-files-limit/ Limit otwartych plików dla każdego procesu może domyślnie wynosić miękki limit 1024 i twardy limit 4096, a ponieważ każdy otwarty port TCP reprezentuje plik, ważne jest, aby wziąć pod uwagę te ograniczenia przy określaniu, ile otwartych gniazd ma zezwolić komputer przed próbą maksymalnego zwiększenia pojemności biblioteki. – DeeperID

+1

@JAM Czy kiedykolwiek odkryłeś, dlaczego twoje gniazda sieciowe działają w okolicach 1400-1800 połączeń? Mam identyczny problem, a moje limity plików są ustawione na 100 000, więc wiem, że to nie jest problem. Każda pomoc będzie wielce ceniona. Dziękuję Ci. – Seth

+0

@seth: minęło trochę czasu, odkąd ostatni raz to sprawdziłem, ale myślę, że to była konkluzja: ankiety XHR pochłonęły zbyt wiele zasobów (w odniesieniu do innych metod transportu). W przypadku korzystania z gniazd internetowych liczba połączeń współbieżnych była wyższa. – JAM

11

Ten facet wydaje się udało posiadaniem ponad 1 milion jednoczesnych połączeń na jednym serwerze node.js.

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

To nie jest dla mnie jasne, ilu dokładnie porty używał choć.

+6

Nie z socket.io Myślę, że nawet z websockets. Facet wydawał się używać długiego sondowania, które, jak sądzę, jest mniej głodne zasobów. –

Powiązane problemy