2013-08-06 26 views
43

Stiamo costruendo un'app Web che verrà utilizzata durante un concorso per votare i concorrenti e visualizzare statistiche di voto in tempo reale su un display centrale.Quanti utenti concorrenti possono gestire un'app Web costruita in Meteor.js?

Il concorso durerà 15 minuti e circa 4000 utenti si collegheranno all'app Web in per un intervallo di tempo e invieranno voti, che tuttavia sono unici per dispositivo dell'utente.

Stiamo pensando di sviluppare tale app Web utilizzando Meteor.js. Tuttavia, a causa della nostra piccola esperienza nello sviluppo di servizi per una tale quantità di utenti concorrenti e lo stato beta di Meteor.js, abbiamo alcune preoccupazioni riguardo alla fattibilità effettiva del progetto.

Di seguito sono le domande che stiamo affrontando:

  1. Esiste un punto di riferimento al numero di utenti simultanei Meteor in grado di gestire? Presumo che ciò dipenda dalla complessità della stessa app web. Nel nostro caso sarebbe piuttosto semplice, solo il client utilizzato per il display centrale sarà sottoscritto alla query di Mongo dal vivo votes.find({}), il resto degli utenti vedrà solo il voto/già votato pulsante.

Avere alcuni dati da un caso reale o da uno scenario di test ci può aiutare molto.

  1. L'infrastruttura di Meteor sarebbe in grado di gestire 4000 utenti? O dovremmo andare per qualche altra soluzione di hosting come elencato in questo deleted question (hai bisogno di 10k + rep per vederlo)?

  2. Ci sono delle considerazioni sulle prestazioni specifiche per Meteor.js di cui dovremmo essere a conoscenza?

Abbiamo già visto i messaggi simili, ma nessuno di loro aveva a che fare con così grande numero di utenti in un tempo così breve:

Inoltre, potremmo usare lo Cluster smart package. Qualcuno ha qualche esperienza con questo?

+0

+1 Buona domanda. Ho un sacco di esperienza nella programmazione di Meteor, ma conosco anche poco come funzionerebbe sotto carico. Il pacchetto smart del cluster è un po 'stupido IMHO e si sincronizza lentamente; è più una prova di concetto e non mi aspetterei che sia stabile come il core Meteor. –

+1

Inoltre, puntelli per fare una buona dose di ricerca adeguata prima di fare questa domanda. –

+1

Solo per chiarire le cose. Il cluster menzionato in questa domanda è storia. Ora abbiamo un altro pacchetto cluster: https://github.com/meteorhacks/cluster (È dello stesso autore per lo stesso scopo in un modo migliore) –

risposta

4

Penso che la risposta onesta sia che ogni caso è diverso, e non ci sono regole rigide che le persone possano darti in termini di prestazioni del tuo sistema con carichi diversi.

La soluzione migliore è creare un semplice prototipo del sistema, con una o due funzioni, quindi cercare di eseguire alcuni test delle prestazioni utilizzando più utenti simultanei per determinare quali sono i limiti. Questo dovrebbe darti una buona base per poi iterare sul tuo prototipo e capire se/come puoi supportare il numero di utenti che richiedi.

11

https://github.com/alanning/meteor-load-test

Se deridere l'app in fretta, dovrebbe essere abbastanza semplice da configurare un test per 4000 connessioni su un periodo di 15 minuti. Non l'ho usato personalmente, ma ho intenzione di farlo una volta che ho finito di arricchire la mia applicazione.

+0

Buon riferimento - tuttavia, prova su una connessione locale perché altrimenti il ​​traffico e non Meteor diventerà il collo di bottiglia. –

36

UPDATE ClassCraft segnala un server Meteor che gestisce 6400 utenti simultanei. Maggiori informazioni su Scalability section of my Why Meteor article.

Vedi anche il post sul forum
How Many Simultaneous Users Does the Biggest Current Meteor App Support?


Ecco un punto di riferimento non è esattamente sugli utenti simultanei, ma piuttosto su come impostare le sottoscrizioni (probabilmente un test più stressante).

Arunoda ha recentemente pubblicato i risultati di un test utilizzando meteor-down (uno strumento di test di carico similar to @alanning's meteor-load-test) e Cluster, uno strumento di bilanciamento del carico Meteor.

Il test è stato eseguito sui più economici server Ocean Digital (512 MB di RAM, $ 5/mese), ei risultati sono stati piuttosto impressionanti:

enter image description here

Per tutti gli scenari di cui sopra, il tempo di risposta del server è inferiore a 8 ms.

Essenzialmente una macchina per merce può gestire 2500 abbonamenti Meteor al minuto e rispondere entro 8 millisecondi. Il ridimensionamento orizzontale richiede meno del 5% di overhead.

Ulteriori informazioni sul test allo Meteor Cluster Performance Test: Impressive Results.

Problemi correlati