Websocket è buono, ma sarebbe in grado di gestire 1.000.000 di connessioni simultanee?
Quante risorse di sistema verranno trattenute per mantenere aperte 1.000.000 di socket Web?Quante risorse di sistema saranno trattenute per mantenere aperti 1.000.000 di socket Web?
risposta
risposta Aggiornato
Risposta breve: sì, ma è costoso.
Risposta lunga:
Questa domanda non riguardano solo WebSockets dal WebSockets sono fondamentalmente socket TCP longevi con una stretta di mano HTTP-like e inquadramento minimo per i messaggi.
La vera domanda è: un singolo server può gestire 1.000.000 di connessioni socket simultanee e quali risorse del server consumerebbe? La risposta è complicata da diversi fattori, ma sono possibili 1.000.000 di connessioni socket simultanee attive per un sistema di dimensioni adeguate (molta CPU, RAM e networking veloce) e con un sistema di server ottimizzato e un software server ottimizzato.
Il numero di connessioni non è il problema principale (che è principalmente solo una questione di ottimizzazione del kernel e memoria sufficiente), è l'elaborazione e l'invio/ricezione di dati a/da ciascuna di tali connessioni. Se le connessioni in entrata sono distribuite su un lungo periodo e sono per lo più inattive o inviano di frequente piccoli blocchi di dati statici, è probabile che si ottenga molto più in alto di anche 1.000.000 di connessioni simultanee. Tuttavia, anche in queste condizioni (connessioni lente che sono in gran parte inattive) si incontrano ancora problemi con reti, sistemi server e librerie server che non sono configurate e progettate per gestire un numero elevato di connessioni.
Vedere la risposta di Alessandro Alinone sull'utilizzo approssimativo delle risorse per 500.000 connessioni.
Ecco alcune risorse più anziani, ma ancora applicabili a leggere su come si dovrebbe configurare il server e scrivere il software del server per supportare un gran numero di connessioni:
Sui sistemi di oggi, la gestione di 1 milione di connessioni TCP simultanee non è un problema.
Posso affermare che in base ai nostri test (divulgazione completa: I am the CTO presso 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 permettetemi di ricapitolare la configurazione in cui abbiamo testato connessioni concomitanti 500K, 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 di memoria GiB.
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 un conseguente picco di larghezza di banda in uscita di 450 Mbit/s.
Il server non ha mai utilizzato più di 13 GB di RAM e la CPU era stabile attorno al 60%.
Con almeno 30 RAM GiB è possibile gestire 1 milione di prese simultanee. La CPU necessaria dipende dal throughput di dati di cui hai bisogno.
- 1. Socket accettare - "Troppi file aperti"
- 2. Mantenere sincronizzate le risorse i18n
- 3. Ottieni un numero di socket aperti in C#?
- 4. Cobol web di sviluppo/di hosting risorse
- 5. come sapere quante righe saranno interessate prima di eseguire una query in microsoft sql server 2008
- 6. Debug Web Socket Web di Web Inspector Debug
- 7. Risorse di sistema insufficienti, acquisizione di video da web camera java
- 8. Web socket più veloci di WebRTC?
- 9. Un approccio aggiornabile per progettare un sistema di applicazioni Web
- 10. Prese Python - mantenere vivo il socket?
- 11. Web socket in Yesod?
- 12. Come mantenere aperti più collassi in Bootstrap 3?
- 13. web socket con scalabilità di bilanciamento del carico
- 14. Utilizzo della chiamata di sistema GNU/Linux `splice` per copia da zero a socket Socket data transfer in Haskell
- 15. Ajax contro socket Web contro Web Workers
- 16. V'è memoria di sistema insufficiente nel pool di risorse 'interna'
- 17. risorse Javascript per applicazioni web come console?
- 18. Connessioni multiple con socket Web
- 19. C'è un modo per mantenere gli Strumenti per gli sviluppatori aperti durante il debug di un'estensione di Chrome?
- 20. Esposizione di risorse da file jar in applicazioni Web (Tomcat7)
- 21. Risorse web semantiche per un nuovo sito web?
- 22. Sistema di badge del sito web
- 23. Struttura del database per il sistema di messaggistica web
- 24. Sistema raccomandazione pagina Web
- 25. Esempio di instradamento del framework di base e socket Web
- 26. Play2 crea client web socket
- 27. Come prevedere la necessità delle risorse di sistema?
- 28. Java può riutilizzare le risorse GUI di sistema non disposte?
- 29. Quante attività sono troppe?
- 30. Come ottenere una lista di socket aperti in Linux usando C?
Sto assumendo che questo fosse un po 'il sapore di Linux. Potresti per favore condividere informazioni aggiuntive su come è stato sintonizzato il kernel? max descrittori di file/dimensioni della finestra tcp ecc.? – quixver
Era vanilla Amazon Linux. I descrittori di file massimi sono stati aumentati. Il buffer di invio TCP è stato ridotto a 1600 byte (fatto per impostazione predefinita da Lightstreamer, sebbene possa essere regolato manualmente). MSS era predefinito. –
Questo software è completamente gratuito o richiede un costo aggiuntivo per utilizzarlo? –