discussione streaming raiplay


piccola discussione in chat #linux-it@irc.freenode.net

mi sono sempre chiesto... cosa accade sui server raiplay.it (ad esempio) quando 10mila persone si connettono contemporaneamente?

si aprono 10000 porte ai 10000 ip ?

sacarde: normalmente si fa multiplexing su un'unica porta. Ah, gli IP dei client sono pubblici.

multiplexing: accetti N connessioni su un'unica porta
la connessione è identificata da ip locale, porta locale, ip remoto, porta remota

e' il sistema operativo che fa questo?

sacarde: sì
sacarde: identificare le connessioni, sì

anche linux?

ovviamente sì
pensa a un web server: accetta N connessioni sulla porta 80

anche migliaia?

anche milioni, il limite è la RAM
tanto tempo fa WhatsApp aveva mostrato che gestiva oltre un milione di client con un solo server

ah

https://blog.whatsapp.com/on-e-millio-n [otr]
sacarde: la chiave per scalare così è avere un unico processo che gestisce tutte le connessioni, anziché avere un processo (con la sua RAM) per ciascuna connessione

se fai un netstat ... vedi migliaia di trasmissioni CONNECTED ?


ESTABLISHED
sacarde: https://en.wikipedia.org/wiki/C10k_problem [otr]
prossimo passo "come faccio a eliminare tutte quelle connessioni in TIME_WAIT"? ;-)
sacarde: ci sono alcuni limiti artificiali che il sistema operativo impone per evitare l'esaurimento delle risorse. Normalmente sui server questi limiti sono configurati in modo da non impedire di accettare migliaia/milioni/whatever di connessioni.


e se quei 10000 vogliono vedere 10000film diversi?

sacarde: a ciascuno* __lore__ è ora conosciuto come _lore_ mandi quello che chiede, ovviamente. Il processo server legge i vari file e su ciascun socket manda quello che l'utente ha richiesto
le connessioni hanno tutte contenuti diversi e indipendenti tra loro

pensavo ai dati sugli HDD diversi... boh

ogni HDD può contenere tanti file, no? ogni processo può leggere tanti file, anche da "HDD" (filesystem) diversi
e' la contemporaneita che mi sconvolge... metti che lo stesso film viene chiesto a distanza di 10 minuti da 10 persone

nel corso degli anni sono emersi e sono stati risolti vari problemi, ovviamente. Per esempio una volta i server usavano un processo per ogni client e tendevano a esaurire la RAM. Oppure certi sistemi caricavano in memoria tutto un file (o una porzione molto grande) prima di trasmetterlo al client (alcune JVM)

sacarde: il processo server leggerà il file 10 volte

sacarde: ovviamente tu immagini che sia servito tutto da un server unico
cosa che non è ovviamente vera
esistono dei dispositivi davanti che smistano il traffico tra più server
Load Balancer
quindi 100000 utenti potrebbero essere serviti magari ognuno da un server diverso

utente2: questo è poco rilevante: sacarde si stupiva del fatto che un singolo server può gestire N client

Vale anche per il load balancer.


Articolo tratto da: #341724 Linux - http://sacarde.altervista.org/
URL di riferimento: http://sacarde.altervista.org/index.php?mod=read&id=1592986148