Meteor.js中内置的Web应用程序可以同时处理多less个用户?

我们正在build立一个networking应用程序,将在比赛中用来投票选手,并在中央显示屏上显示实时投票统计数据。

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

我们正在考虑使用Meteor.js开发这样的web应用程序。 然而,由于我们在开发这么大量的并发用户服务方面经验不足,以及Meteor.js的testing状态,我们对这个项目的实际可行性有一些担忧。

以下是我们正在处理的问题:

  1. 有meteor可以处理多less个并发用户的基准吗? 我认为这取决于networking应用程序本身的复杂性。 在我们的情况下,这将是相当直接的,只有用于中央显示的客户端将被订阅到实时的Mongo查询votes.find({}) ,其余的用户将只能看到已投票的button。

从一个真实的案例或testing场景获得一些数据将帮助我们很多。

  1. Meteor的基础设施能够处理4000个用户吗? 或者我们应该去其他一些托pipe解决scheme列出在这个被删除的问题 (你需要10K +代表看到它)?

  2. 有没有Meteor.js特有的性能考虑,我们应该知道?

我们已经看到了类似的post,但是他们没有一个在这么短的时间内处理这么多的用户:

  • meteor的服务器能处理多less负载? (2013)
  • 在许多客户之间共享巨大的collections时,meteor可以有多高效?

另外,我们可以使用Cluster智能包 。 任何人有这方面的经验?

更新 ClassCraft报告一个Meteor服务器处理6400个并发用户。 在我为什么meteor文章的可伸缩性部分阅读更多。

另见论坛post
有多less同时用户做最大的meteor应用程序支持?


这里的基准不完全是关于并发用户,而是关于设置订阅(可以说是一个更紧张的testing)。

Arunoda最近公布了使用meteor-down ( 类似于@ alanning的meteor负载testing的负载testing工具)和Cluster (Meteor负载平衡工具) 的testing结果 。

testing是在最便宜的数字海洋服务器(512MB RAM,$ 5 /月)上运行的,结果令人印象深刻:

在这里输入图像说明

对于上述所有场景,服务器响应时间小于8ms。

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

您可以阅读更多关于Meteor Cluster性能testing的testing:令人印象深刻的结果 。

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

如果您快速模拟应用程序,在15分钟内设置4000个连接的testing应该相当简单。 我没有亲自使用它,但是一旦我完成了自己的应用程序,就打算这样做。

我认为诚实的答案是,每个案件都是不同的,人们可以根据你的系统在不同负载下的performance来给你提供一些硬性规定。

最好的办法是用一个或两个函数实际构build一个简单的系统原型,然后使用多个并发用户运行一些性能testing,以确定其局限性。 这应该给你一个很好的基础,然后迭代你的原型,并找出是否/如何支持你需要的用户数量。