We are building a web app which will be used during a contest to vote contestants and display real-time vote statistics on a central display.
The contest will last 15 minutes and around 4000 users will be connecting to the web app in that lapse of time and send votes, which however are unique per user device.
We are thinking to develop such web app using Meteor.js. However, due to our little experience in developing services for such big amount of concurrent users and the beta state of Meteor.js, we have some concerns regarding the actual feasibility of the project.
The following are the questions we are addressing:
votes.find({})
, the rest of the users will only see the vote / already voted button.Having some data from a real case or test scenario would help us a lot.
Would Meteor's infrastructure be able to handle 4000 users? Or should we go for some other hosting solution as listed in this deleted question (you need 10k+ rep to see it)?
Are there any performance considerations specific to Meteor.js we should be aware of?
We have seen already similar posts, however none of them was dealing with such large amount of users in such a short time:
Also, we could use the Cluster smart package. Anyone has any experience with this?
UPDATE ClassCraft reports one Meteor server handling 6400 concurrent users. Read more in the Scalability section of my Why Meteor article.
See also the forum post
How Many Simultaneous Users Does the Biggest Current Meteor App Support?
Here's a benchmark not exactly about concurrent users, but rather about setting up subscriptions (arguably a more stressful test).
Arunoda has recently published the results of a test using meteor-down
(a load testing tool similar to @alanning's meteor-load-test) and Cluster, a Meteor load balancing tool.
The test was run on the cheapest Digital Ocean servers (512MB RAM, $5/month), and the results were rather impressive:
For all the above scenarios, server response time is less than 8ms.
Essentially one commodity machine can handle 2500 Meteor subscriptions per minute and respond within 8 miliseconds. Horizontal scaling takes less than 5% overhead.
You can read more about the test at Meteor Cluster Performance Test: Impressive Results.