2013-04-08 26 views
71

Questa domanda è stata posta in precedenza ma non di recente e non con una risposta chiara.Numero massimo di connessioni Socket.IO simultanee

Utilizzo di Socket.io, c'è un numero massimo di connessioni simultanee che è possibile mantenere prima di dover aggiungere un altro server?

Qualcuno sa di ambienti di produzione attivi che utilizzano websocket (in particolare socket.io) su larga scala? Mi piacerebbe davvero sapere che tipo di installazione è la migliore per le connessioni massime?

Poiché i Websocket sono costruiti su TCP, la mia comprensione è che, a meno che le porte non siano condivise tra le connessioni, il limite della porta a 64K sarà limitato. Ma ho anche visto rapporti di 512K connections using Gretty. Quindi non lo so.

+2

[Trello] (https://trello.com/) utilizza prese su vasta scala (in particolare socket.io). – James

+0

Ho letto che Trello ha dovuto modificare il codice Socket.io a causa di un limite di 10.000 connessioni ed era in grado di mantenere "molte migliaia" di connessioni prima di aggiungere server. Ancora un enorme divario tra quello e 512K di altri sistemi server. – Andrew

+1

Quanti anni ha quell'articolo? Trello ha recentemente raggiunto oltre 1 milione di utenti attivi al mese, quindi immagino che ora siano in esecuzione più di 10.000 socket attivi. [Trello usa Redis] (http://stackoverflow.com/questions/8579336/how-is-redis-used-in-trello) per sedersi sopra socket.io per la scalabilità – James

risposta

47

Questo articolo può aiutarvi lungo la strada: http://drewww.github.io/socket.io-benchmarking/

mi chiedevo la stessa domanda, così ho finito per scrivere un piccolo test (usando XHR-polling) per vedere quando le connessioni hanno cominciato a fallire (o rimanere indietro). Ho trovato (nel mio caso) che le prese iniziarono a comportarsi a circa 1400-1800 connessioni simultanee.

Questa è una breve succo che ho fatto, simile alla prova ho usato: https://gist.github.com/jmyrland/5535279

+3

Mi rendo conto che questo è un argomento più vecchio ma l'ho trovato per primo quando cercando una domanda per la mia risposta e alla fine ho scoperto che questo è utile: https://rtcamp.com/tutorials/linux/increase-open-files-limit/ Il limite di file aperti per processo può essere impostato su un limite di 1024 limite rigido di 4096 e dal momento che ogni porta TCP aperta rappresenta un file, è importante considerare questi limiti quando si determina quanti socket aperti una macchina consentirà prima di provare a massimizzare la libreria. – DeeperID

+1

@JAM Hai mai scoperto perché le tue prese web hanno funzionato fino a circa 1400-1800 connessioni? Sto riscontrando il problema identico e i limiti del mio file sono impostati su 100.000, quindi so che non è questo il problema. Qualsiasi aiuto sarebbe molto apprezzato. Grazie. – Seth

+0

@seth: è passato un po 'di tempo dall'ultima volta che l'ho recensito, ma penso che questa sia stata la conclusione: il sondaggio XHR ha assorbito troppe risorse (in relazione ad altri metodi di trasporto). Quando si utilizzano websocket, il numero di connessioni simultanee era più alto. – JAM

11

Questo ragazzo sembra essere riuscito ad avere oltre 1 milione di connessioni simultanee su un singolo server Node.js.

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

Non è chiaro per me esattamente quante porte stava usando però.

+6

Non con socket.io Penso e nemmeno con le websocket. Sembrava che il tizio stia usando un lungo sondaggio che immagino sia meno affamato di risorse. –

Problemi correlati