44

我们正在构建一个网络应用程序,该应用程序将在比赛期间用于对参赛者进行投票并在中央显示屏上显示实时投票统计数据。

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

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

以下是我们正在解决的问题:

  1. 有没有关于 Meteor 可以处理多少并发用户的基准?我认为这取决于网络应用程序本身的复杂性。在我们的例子中,这将是相当直接的,只有用于中央显示的客户端将订阅实时 Mongo 查询votes.find({}),其余用户只会看到vote/already voted按钮。

从真实案例或测试场景中获取一些数据会对我们有很大帮助。

  1. Meteor 的基础设施能够处理 4000 个用户吗?还是我们应该选择这个已删除问题中列出的其他托管解决方案(您需要 10k+ 代表才能看到它)?

  2. 是否有任何我们应该注意的特定于 Meteor.js 的性能注意事项?

我们已经看到了类似的帖子,但是没有一个是在这么短的时间内与如此大量的用户打交道:

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

4

3 回答 3

38

UPDATE ClassCraft 报告一个 Meteor 服务器处理 6400 个并发用户。在我的Why Meteor 文章的可扩展性部分阅读更多内容。

另请参阅论坛帖子
当前最大的 Meteor 应用程序支持多少同时用户?


这是一个不完全关于并发用户的基准,而是关于设置订阅的基准(可以说是一个压力更大的测试)。

Arunoda 最近发布了使用meteor-down类似于@alanning 的 meteor-load-test的负载测试工具)和Meteor 负载平衡工具Cluster的测试结果。

测试在最便宜的 Digital Ocean 服务器上运行(512MB RAM,5 美元/月),结果相当令人印象深刻:

在此处输入图像描述

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

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

您可以在Meteor Cluster 性能测试:令人印象深刻的结果中阅读有关该测试的更多信息。

于 2015-02-22T01:17:42.950 回答
11

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

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

于 2013-08-06T15:16:58.547 回答
4

我认为诚实的答案是,每种情况都是不同的,人们没有硬性规定可以让你了解你的系统在不同负载下的表现。

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

于 2013-08-06T15:07:28.120 回答