我们正在构建一个将在比赛期间使用的网络应用程序 投票选手并在中央显示屏上显示实时投票统计数据。
比赛将持续15分钟,大约4000名用户将连接到网络应用程序 时间流逝并发送投票,但每个用户设备都是唯一的。
我们正在考虑使用Meteor.js开发此类Web应用程序。但是,由于我们为大量并发用户和Meteor.js的beta状态开发服务的经验不足,我们对该项目的实际可行性存在一些担忧。
以下是我们要解决的问题:
votes.find({})
,用户的其余部分将只能看到<大骨节病>投票骨节病> / 已经投票按钮。从真实案例或测试场景中获取一些数据会对我们有很大帮助。
Meteor的基础架构能够处理4000个用户吗?或者我们是否应该使用此deleted question中列出的其他托管解决方案(您需要10k + rep才能看到它)?
我们应该注意Meteor.js的特定性能考虑吗?
我们已经看过类似的帖子,但是他们都没有在如此短的时间内处理如此大量的用户:
另外,我们可以使用Cluster smart package。任何人都有这方面的经验吗?
答案 0 :(得分:37)
更新 ClassCraft报告一个处理6400个并发用户的Meteor服务器。请阅读Scalability section of my Why Meteor article。
中的更多内容另见论坛帖子
How Many Simultaneous Users Does the Biggest Current Meteor App Support?
这里的基准不完全是关于并发用户的,而是关于设置订阅(可以说是一个更有压力的测试)。
Arunoda最近使用meteor-down
(负载测试工具similar to @alanning's meteor-load-test)和Cluster(Meteor负载平衡工具)发布了测试结果。
测试是在最便宜的Digital Ocean服务器上运行的(512MB RAM,每月5美元),结果令人印象深刻:
对于上述所有情况,服务器响应时间小于8毫秒。
基本上,一台商品机每分钟可以处理2500个Meteor订阅,并在8毫秒内响应。水平缩放的开销不到5%。
您可以在Meteor Cluster Performance Test: Impressive Results了解有关测试的更多信息。
答案 1 :(得分:11)
https://github.com/alanning/meteor-load-test
如果您快速模拟应用程序,那么在15分钟内设置4000个连接的测试应该相当简单。我没有亲自使用它,但计划在我完成自己的应用程序之后这样做。
答案 2 :(得分:4)
我认为诚实的答案是,每个案例都不同,并且没有严格的规则,人们可以根据您的系统在不同负载下的表现来提供这些规则。
最好的办法是实际构建一个简单的系统原型,使用一个或两个函数,然后使用多个并发用户运行一些性能测试,以确定其局限性。这应该为您提供了一个很好的基础,然后迭代您的原型,并确定是否/如何支持您需要的用户数。