Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 短时间内的高流量_Ruby On Rails_Ruby On Rails 3_Performance_Heroku - Fatal编程技术网

Ruby on rails 短时间内的高流量

Ruby on rails 短时间内的高流量,ruby-on-rails,ruby-on-rails-3,performance,heroku,Ruby On Rails,Ruby On Rails 3,Performance,Heroku,我在这里寻求一些建议。我学校的学生部注册过程是在线的,涉及大约6000名学生 他们以先到先得为基础。每年他们都会在中午开放网站,大量的人开始尝试尽快注册以获得好的座位。每年服务器都会崩溃,每个人都很生气 经过几年的挫折,我提出要重做他们的注册系统 我的计划是用RubyonRails重写它,并使用heroku作为宿主 heroku dyno一次只处理一个请求吗 Heroku可扩展到50个Dyno。这是否足以在短时间内(比如半小时)处理6000名用户,每笔交易的浏览量约为5次 在我开始这个项目之前

我在这里寻求一些建议。我学校的学生部注册过程是在线的,涉及大约6000名学生

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

经过几年的挫折,我提出要重做他们的注册系统

我的计划是用RubyonRails重写它,并使用heroku作为宿主

  • heroku dyno一次只处理一个请求吗
  • Heroku可扩展到50个Dyno。这是否足以在短时间内(比如半小时)处理6000名用户,每笔交易的浏览量约为5次
  • 在我开始这个项目之前,你能给我一些有用的策略或提示吗
heroku dyno一次只处理一个请求吗

对。Heroku dynos是单线程的

Heroku可扩展到50个Dyno。这足以应付吗 6000名用户,在短时间内每笔交易可浏览5次页面 时间,比如说半小时

这取决于页面加载的速度。为了便于讨论,让我们假设每个页面请求需要2个页面(根据谷歌分析建议),并且您需要加载
6000个用户x 5个页面浏览量/30分钟
-1000个页面浏览量/1分钟

在每页加载2秒的情况下,一个dyno将每分钟加载30个页面视图。在50 dynos下,每分钟的页面浏览量将达到1500次。这显然会让你超越你的总体目标,并给你留下一些出错的空间,但如果所有6000名用户同时点击页面,那么一个Heroku应用程序可能无法跟上,这取决于你的超时时间。您需要实现一个用户队列系统——如下所述

在我深入研究之前,你能给我一些有用的策略或提示吗 项目

综上所述,2秒的加载时间可能会有所不同,这取决于页面需要加载的资产、与数据库交互所需的量、查询、缓存等。您的页面也可能更快地提供服务

您还需要担心所有用户的初始点击率。这可以通过先到先得的服务排队系统来解决——如果你曾经使用过Ticketmaster的网站,这类似于Ticketmaster所使用的排队系统。这可以通过AWS SQS或您喜欢的队列系统来实现

有了用户队列、资产缓存和公共数据库查询,您应该能够用50个或更少的dyno完成这项工作

编辑:我相信你的话,Heroku将运行50个网络动态。他们在定价页面上显示24为最大值,但我找不到任何这样或那样的信息

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

这取决于您使用的web服务器()。如果你想在dyno中获得更多的并发性,我建议你看看类似的东西

Heroku可扩展到50个Dyno。这是否足以在短时间内(比如半小时)处理6000名用户,每笔交易的浏览量约为5次? 在我开始这个项目之前,你能给我一些有用的策略或提示吗


您可以拥有50多个Dyno。对于你的应用程序来说,一个具体的答案比猜测或概括要好得多。对您的站点运行负载测试(例如,使用),并找出真实的数字。附加组件的成本是按比例计算的,因此您只需在安装期间付费。因此,请确保在完成测试后卸载或降级Blitz。

您可以通过命令行执行超过50个dyno,据我所知,您可以执行任意操作。dyno不是单线程的。Rails应用程序可能是(检查)。一个dyno可以访问4个内核。谷歌推荐的2秒是在浏览器中测量的。这可能是许多单独的HTTP请求。服务器上的页面加载时间可能应保持在100毫秒以下。