Risposte:
Risposta aggiornata
Risposta breve : sì, ma è costoso.
Risposta lunga :
Questa domanda non è unica per i WebSocket poiché i WebSocket sono socket TCP fondamentalmente di lunga durata con un handshake simile a HTTP e un frame minimo per i messaggi.
La vera domanda è: un singolo server potrebbe gestire 1.000.000 di connessioni socket simultanee e quali risorse del server consumerebbe? La risposta è complicata da diversi fattori, ma 1.000.000 di connessioni socket attive simultanee sono possibili per un sistema di dimensioni adeguate (molta CPU, RAM e rete veloce) e con un sistema server ottimizzato e software server ottimizzato.
Il numero di connessioni non è il problema principale (questa è principalmente solo una questione di ottimizzazione del kernel e memoria sufficiente), è l'elaborazione e l'invio / la ricezione di dati a / da ciascuna di queste connessioni. Se le connessioni in entrata sono distribuite su un lungo periodo e sono per lo più inattive o inviano raramente piccoli blocchi di dati statici, potresti probabilmente ottenere molto più di 1.000.000 di connessioni simultanee. Tuttavia, anche in queste condizioni (connessioni lente che sono per lo più inattive) si verificheranno comunque problemi con reti, sistemi server e librerie server che non sono configurati e progettati per gestire un gran numero di connessioni.
Vedi la risposta di Alessandro Alinone sull'utilizzo approssimativo delle risorse per 500.000 connessioni.
Di seguito sono riportate alcune risorse meno recenti ma ancora applicabili per leggere come configurare il server e scrivere il software del server per supportare un gran numero di connessioni:
Sui sistemi odierni, la gestione di 1 milione di connessioni TCP simultanee non è un problema.
Posso affermarlo sulla base dei nostri test (divulgazione completa: sono il CTO di Lightstreamer).
Abbiamo dovuto dimostrare più volte, ad alcuni dei nostri clienti, che 1 milione di connessioni può essere raggiunto su una singola scatola (e non necessariamente una macchina super-mostro). Ma lasciatemi ricapitolare la configurazione in cui abbiamo testato 500.000 connessioni simultanee, poiché si tratta di un test molto più recente eseguito su Amazon EC2.
Abbiamo installato Lightstreamer Server (che è un server WebSocket, tra le altre cose) su un'istanza m2.4xlarge. Ciò significa 8 core e 68,4 GiB di memoria.
Abbiamo lanciato 11 macchine client per creare 500.000 connessioni simultanee al server Lightstreamer. Il test è stato configurato in modo che il throughput totale in uscita dal server fosse di 90.000 aggiornamenti / s, con conseguenti picchi di larghezza di banda in uscita di 450 Mbit / s.
Il server non ha mai utilizzato più di 13 GiB di RAM e la CPU è rimasta stabile intorno al 60%.
Con almeno 30 GiB di RAM puoi gestire 1 milione di socket simultanei. La CPU necessaria dipende dalla velocità di trasmissione dati necessaria.