Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Node.js + socket.io
Forum PHP.pl > Forum > Serwery WWW
Qss
Witam,
Czy ma ktoś doświadczenie z ta technologią ?
Szukam informacji ile, na ten czas serwer node.js + socket.io może utrzymać użytkowników..
Z tego co czytałem to przeciętny serwer jest w stanie utrzymać do 64k połączeń.
Powiedzmy że mamy uruchomiona aplikacje w node.js, jeden proces i zrobiony jeden socket który ma kilka pokoi.
Idea działania to relacja wydarzenia.
Użytkownicy wchodzą na taki pokój łącza się z tym socketem i czekają na wiadomości.
Z drugiej strony admin tez łączy się z tym socketem i ma możliwość rozsyłania wiadomości do tych użytkowników powiedzmy 100msg/1min.

Zakładając że mamy jakiegoś VPS'a z 2-4GB ramu. Czy serwer uciągnie około 20-30k użytkowników ?
Damonsson
Bez zająknięcia. Jak to dobrze zoptymalizujesz to z tymi 30k zmieścisz się w 1GB RAM.
Qss
Dzięki za informacje. Jeśli chodzi o optymalizacje to jeszcze nie jestem w tym obeznany. Dopiero zacząłem się bawić ta technologią i wszystko działa jak na przykładowym tutorialu z chatem na oficjalnej stronie socket.io.
czyli np.

  1. io.sockets.in(room).emit('cos', 'JSON z kilkoma liczbami lub wiadomośc do kilku zdań') // po stronie serwera
  2.  
  3. io.on('cos', function(msg){
  4. //cos tam robi po stronie klienta
  5. });


Oczywiście przed wysłaniem emit() jest to zapisywane w mongodb. ale robi to jedna/dwie osoba relacjonujące. Do użytkowników leci przez socket.
Wiem że coś takiego na AJAXie który odpytuje MySQL/PHP zaczyna już mulić przy ~20k.

Aha, mógłbyś coś polecić odnośnie tej optymalizacji ?
by_ikar
Jak będziesz przy każdym requeście coś zapisywać do bazy i będziesz miał ich 30k, no to żadna baza ci na takim sprzęcie nie wytrzyma. Również samo node.js jest 1 wątkowe, co za tym idzie użyje tylko 1 rdzenia z kilku dostępnych. Do tego będziesz potrzebował odpalić swoją aplikacje jako cluster, tyle że wtedy nie będziesz mógł współdzielić emitów, bo sokety będą działać w osobnych procesach, więc będziesz musiał wykorzystać powiedzmy redisa. Jak dopiero zaczynasz, to jeszcze spora droga przed tobą..
Qss
by_ikar nie no zapis do bazy jest maksymalnie 100 razy na minute, chodzi tylko o to czy przykładowo 2GB ramu wystarczy na obsługę i utrzyma połączenie klient<->serwer (socketem) dla 30k ludzi którzy będą odbierać te informacje. Czyli wysyłka 100msg/min do 30k nasłuchujących na sockecie, a przed wysłaniem do użytkowników wiadomość jest zapisywana w bazie.
com
zawsze może wykorzystać hbase, czy cassandre smile.gif
misiek08
Moim zdaniem do 100k połączeń dasz radę. Jeśli jesteś chętny na jakąś współpracę to zapraszam na PW.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.