Meteor.js中构建的Web应用程序可以处理多少并发用户?

时间:2013-08-06 15:03:52

标签: javascript meteor scalability

我们正在构建一个将在比赛期间使用的网络应用程序 投票选手并在中央显示屏上显示实时投票统计数据。

比赛将持续15分钟,大约4000名用户将连接到网络应用程序 时间流逝并发送投票,但每个用户设备都是唯一的。

我们正在考虑使用Meteor.js开发此类Web应用程序。但是,由于我们为大量并发用户和Meteor.js的beta状态开发服务的经验不足,我们对该项目的实际可行性存在一些担忧。

以下是我们要解决的问题:

  1. 是否有关于Meteor可以处理多少并发用户的基准?我认为这取决于Web应用程序本身的复杂性。在我们的情况下,将是相当简单的,仅用于中央显示的客户端将被订阅实时Mongo的查询votes.find({}),用户的其余部分将只能看到<大骨节病>投票 / 已经投票按钮。
  2. 从真实案例或测试场景中获取一些数据会对我们有很大帮助。

    1. Meteor的基础架构能够处理4000个用户吗?或者我们是否应该使用此deleted question中列出的其他托管解决方案(您需要10k + rep才能看到它)?

    2. 我们应该注意Meteor.js的特定性能考虑吗?

    3. 我们已经看过类似的帖子,但是他们都没有在如此短的时间内处理如此大量的用户:

      另外,我们可以使用Cluster smart package。任何人都有这方面的经验吗?

3 个答案:

答案 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美元),结果令人印象深刻:

enter image description here

  

对于上述所有情况,服务器响应时间小于8毫秒。

基本上,一台商品机每分钟可以处理2500个Meteor订阅,并在8毫秒内响应。水平缩放的开销不到5%。

您可以在Meteor Cluster Performance Test: Impressive Results了解有关测试的更多信息。

答案 1 :(得分:11)

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

如果您快速模拟应用程序,那么在15分钟内设置4000个连接的测试应该相当简单。我没有亲自使用它,但计划在我完成自己的应用程序之后这样做。

答案 2 :(得分:4)

我认为诚实的答案是,每个案例都不同,并且没有严格的规则,人们可以根据您的系统在不同负载下的表现来提供这些规则。

最好的办法是实际构建一个简单的系统原型,使用一个或两个函数,然后使用多个并发用户运行一些性能测试,以确定其局限性。这应该为您提供了一个很好的基础,然后迭代您的原型,并确定是否/如何支持您需要的用户数。