2013-03-20 12 views
7

Stai pensando di creare un'app in tempo reale in cui gli utenti possano collaborare. Trovato node.js + socket.io per essere una delle soluzioni per questo tipo di problema.Si avvicina il collo di bottiglia con le prese?

Ho sentito da altri sviluppatori che ci sarà un collo di bottiglia per quanto riguarda il numero di socket che il mio server fornirà agli utenti. Quindi se ho centinaia di utenti che collaborano contemporaneamente, il numero di socket aperti si esaurirà e gli utenti non potranno connettersi. È una preoccupazione valida?

aggiornamento: su una sorta di nota correlata Sto cercando di utilizzare SockJS invece di Socket.io. C'è una thread that explains pros and cons di queste librerie. Anche this is a good read.

+0

JS non è la lingua più veloce là fuori. La ricerca di una soluzione C++ può facilmente quadruplicare il tuo throughput se ti trovi a soffocare su JS. Il problema non è il numero di socket che hai, ma riesci a elaborarli in tempo. – dtech

+2

Il numero di descrittori di file (inclusi i socket) che un processo può aprire è configurabile su tutti i (più?) Sistemi operativi di tipo UNIX, solitamente usando 'ulimit' (nella shell) o' sysctl' (system wide, sarebbe ancora richiede anche 'ulimit'). – robertklep

risposta

4

Per centinaia di utenti non penso che sia una preoccupazione.

Gli zoccoli come sapete hanno una connessione persistente tra il client e il server ed entrambe le parti possono iniziare a inviare i dati in qualsiasi momento. Mantenerli aperti non è un problema tanto quanto gestire il carico in termini di messaggi inviati/secondi.

Socket.io può gestire facilmente 1000 connessioni simultanee. Ma fallirà se invierà più di 8-10k messaggi al secondo. Colpisci la barriera di carico prima che le prese siano esaurite. Nella maggior parte dei casi, la gestione di più utenti simultanei si traduce in un maggiore carico. Quindi non preoccuparti di perdere le prese. Cercare di superare questa barriera richiederebbe più risorse del server.

link utili:

  1. Socket.IO - are the open connections a concern?
  2. http://www.quora.com/How-do-I-scale-socket-io-servers-2
Problemi correlati