Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Node.js + socket.io
Qss
post 2.04.2015, 10:31:23
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Damonsson
post 2.04.2015, 12:17:10
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Bez zająknięcia. Jak to dobrze zoptymalizujesz to z tymi 30k zmieścisz się w 1GB RAM.
Go to the top of the page
+Quote Post
Qss
post 2.04.2015, 12:42:47
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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 ?

Ten post edytował Qss 2.04.2015, 12:45:30
Go to the top of the page
+Quote Post
by_ikar
post 2.04.2015, 14:41:03
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


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ą..
Go to the top of the page
+Quote Post
Qss
post 2.04.2015, 15:03:52
Post #5





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
com
post 2.04.2015, 22:00:17
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


zawsze może wykorzystać hbase, czy cassandre smile.gif
Go to the top of the page
+Quote Post
misiek08
post 31.05.2015, 14:02:09
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 6
Dołączył: 2.02.2008

Ostrzeżenie: (10%)
X----


Moim zdaniem do 100k połączeń dasz radę. Jeśli jesteś chętny na jakąś współpracę to zapraszam na PW.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 10:15