Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 283 Pomógł: 34 Dołączył: 21.03.2008 Ostrzeżenie: (0%)
|
Mam stronę, która w krótkim czasie jest odwiedzana przez 2500 osób, dla każdej z tych osób odpala się ajax co 5 sekund (celem aktualizacji wyświetlanych danych),
co sprawia, że zużycie 4 rdzeni na VPS jest na dość wysokim poziomie. Chciałbym zmniejszyć zużycie CPU przez zastosowanie zamiast ajaxa socket.io po stronie front-endu oraz nodejs po stronie back-endu, po środku by był elephant.io - schemat działania byłby następujący: użytkownik po przez php (elephant.io) wysyłał by wiadomość do serwera (nodejs), a ten z kolei rozsyłał by wiadomość ze zmianą do wszystkich połączych przez sockety. Czy jest ktoś mi w stanie powiedzieć jaki jestem w stanie uzyskać skok w wydajności stosując takie rozwiązanie zamiast ajaxa? (procentowo, liczbowo, whatever) Ten post edytował nmts 7.04.2015, 01:08:20 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
Sokety też wysyłają handshak'i, które też zawierają jakieś znaki, nie ma tego tam za dużo, no ale też jest. Zaproponowałem ci SSE z uwagi na to że jak to napisałeś, nie chcesz babrać się w js, bo wolisz to zrobić w php. A roboty jest tak na prawdę tyle samo. A JS tak na prawdę źle wygląda tylko po stronie przeglądarki z uwagi na DOM, tam gdzie tego DOM'a nie ma, JS jest nawet przyjemny.
Podsumowując, 4 rdzenia nie wiele mi mówią, fajnie by było wiedzieć jakie to są 4 rdzenia. Kolejna sprawa jest taka że node jest 1 wątkowy, czyli będzie pracować i tak na jednym rdzeniu. Do tego musisz albo napisać sobie klaster, albo użyć jakiegoś pakietu który ten klaster uruchomi z drobną konfiguracją. Dodatkowo potrzebujesz jakiś spawner, bo node sam w sobie może ci się wywalić, w końcu jest to wersja aż 0.10, więc jest to zrozumiałe i tutaj też przyda się jakiś spawner. Również polecam PM2 bo on dokładnie to robi, dzięki czemu aplikacja działa bez przerwy. No a jak klaster, a node chodzi w jednym wątku, to musisz jakoś połączyć sokety, aby nie było tak że użytkownicy będą w różnych wątkach i się ze sobą nie dogadają, więc przyda ci się jakiś redis, czy inny, aby te emity współdzielić. Jest z tym sporo roboty, sporo do nauczenia się. Stąd moja propozycja odnośnie SSE. Ale jeżeli to ogarniesz i nie są to jakieś beznadziejne rdzenia, to spokojnie powinieneś dać rade, w sumie nawet w jednym wątku, kwestia tego jaki to jest procesor. Ten post edytował by_ikar 8.04.2015, 09:08:23 |
|
|
|
nmts Ajax vs sockety, zużycie CPU 7.04.2015, 01:06:48
by_ikar Jeżeli nie będziesz wysyłać za dużo emitów na seku... 7.04.2015, 07:39:51 
nmts Cytat(by_ikar @ 7.04.2015, 08:39:51 )... 7.04.2015, 09:43:13
by_ikar No to może zamiast sokety, użyj server sent events... 7.04.2015, 10:48:24
nmts CytatNie rozumiem, emitów tyle co osób? Po co ci t... 7.04.2015, 21:42:22
!*! Cytat(nmts @ 7.04.2015, 02:06:48 ) ..... 8.04.2015, 09:27:16
nmts Cytat2500? 2,5k? dwa tysiące pięćset? Toć to maleń... 8.04.2015, 10:42:33
Tuminure CytatNie jednocześnie, w krótkim odstępie czasu. J... 8.04.2015, 11:13:18
nmts CytatAle przecież ilość emitów nie powinna być zal... 27.04.2015, 10:24:36 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 13:44 |