1

我在这里寻求一些建议。我校学生部门注册流程在线,涉及约6,000名学生

他们以座位先到先得为基础。每年他们在中午打开网站,大量的人开始尝试尽快注册以获得好座位。每年服务器都会崩溃,每个人都很生气。

经过几年的沮丧,我提出重做他们的注册系统。

我的计划是用 ruby​​ on rails 重写它,并使用 heroku 进行托管。

  • heroku dyno 一次只处理一个请求吗?
  • Heroku 可扩展至 50 个测功机。这是否足以在很短的时间内(比如半小时)处理大约 6,000 名用户和每笔交易大约 5 次浏览量?
  • 在我深入这个项目之前,你可以给我任何有用的策略或提示吗?
4

2 回答 2

2

heroku dyno 一次只处理一个请求吗?

是的。Heroku dynos 是单线程的。

Heroku 可扩展至 50 个测功机。这是否足以在很短的时间内(比如半小时)处理大约 6,000 名用户和每笔交易大约 5 次浏览量?

这取决于您的页面加载速度。为了争论,让我们假设每个页面请求需要 2 秒(根据 Google Analytics 的建议),并且您需要加载6,000 users x 5 page views / 30 minutes- 每分钟 1000 次页面浏览量。

在每页加载 2 秒的情况下,一个单独的测功机每分钟将加载 30 个页面浏览量。在 50 dynos 下,这将是每分钟 1500 次页面浏览量。这显然会让你超出你的总体目标并给你留下一些出错的空间,但如果所有 6000 名用户都同时访问该页面,那么单个 Heroku 应用程序可能无法跟上你的超时时间。您需要实现一个用户队列系统 - 如下所述。

在我深入这个项目之前,你可以给我任何有用的策略或提示吗?

总而言之,2 秒的加载时间可能会根据您的页面需要加载的资产、与数据库交互所需的数量、查询、缓存等而有所不同。您的页面也可能会更快地提供服务。

您还需要担心所有用户的初始点击量。这可以通过先到先得的队列系统来解决 - 如果您曾经使用过他们的网站,则类似于 Ticketmaster 使用的系统。这可以通过 AWS SQS 或您对队列系统的偏好来完成。

通过用户队列和资产缓存以及常见的数据库查询,您应该能够使用 50 个或更少的测功机来完成此任务。

编辑:我相信 Heroku 将运行 50 个网络测功机。他们在定价页面上将 24 显示为最大值,但我无法以一种或另一种方式找到任何信息。

于 2013-02-04T20:33:45.757 回答
1

heroku dyno 一次只处理一个请求吗?

这取决于您使用的 Web 服务器(https://devcenter.heroku.com/articles/dynos#dynos-and-requests)。如果您想在测功机中获得更多并发性,我建议您看一下Puma之类的东西。

Heroku 可扩展至 50 个测功机。这是否足以在很短的时间内(比如半小时)处理大约 6,000 名用户和每笔交易大约 5 次浏览量?在我深入这个项目之前,你可以给我任何有用的策略或提示吗?

您可以拥有超过 50 个测功机。为您的应用程序提供的具体答案将比猜测或概括要好得多。对您的站点运行负载测试(例如,使用Blitz)并找出实际数字。附加组件的成本按每秒按比例计算,因此您只需为安装它的期间付费。因此,请确保在完成测试后卸载或降级 Blitz。

于 2013-02-04T22:03:45.247 回答