如何在Heroku上使用自动缩放网络dynos?

时间:2012-02-07 16:53:49

标签: ruby-on-rails-3 heroku scalability

使用Heroku时,如果需要的话, AUTO 如何在网络dynos方面进行扩展?假设我们每2-3分钟就会吸引100名并发用户。如果我们的应用程序卡在5-6网络dynos上。我们搞砸了。

其次,我无法在24小时内监控流量,以确定是否需要向上或向下扩展。

到目前为止,我见过http://hirefireapp.com/http://www.heroscale.com/ 关于这两个的任何建议?

6 个答案:

答案 0 :(得分:25)

heroku本身不这样做的原因是它是一个非常复杂的问题需要解决。

例如,想象一下上面的情景,你突然开始看到一个队列形成并想要使dynos斜坡上升。你又开了十个。然而,这不是一个dyno问题,你的数据库运行缓慢,所以现在你有更多的dynos坐着等待数据库,现在对它有更多的需求。

虽然那里有自动缩放产品,但我没有尝试过任何一种产品,并且完全相信目前只有人才可以正确地进行缩放。您的里程可能会有所不同。

我在过去发现,将资源设置为预期的使用级别(可能高于当前使用率)往往效果最好,排除大量流量涌入(例如黑客新闻等)

答案 1 :(得分:24)

我建立了HireFire,并希望分享一些最新信息:

HireFire能够根据各种指标自动扩展您的网络和工作人员动态。我们目前支持以下指标来源/类型:

  • HireFire(响应时间)| Web Dynos
  • HireFire(工作队列)|工人Dynos
  • Heroku Logplex(响应时间)| Web Dynos
  • Heroku Logplex(每分钟请求数)| Web Dynos
  • Heroku Logplex(Dyno CPU Load)| Web Dynos
  • NewRelic(Apdex)| Web Dynos
  • NewRelic(响应时间)| Web Dynos
  • NewRelic(每分钟请求数)| Web Dynos

HireFire(响应时间)执行基本HTTP请求以测量响应时间。

HireFire(作业队列)允许您根据队列大小自动调整工作人员dynos。你将在你的终端设置一个非常简单的端点(我们有一个RubyGem,但它可以用任何语言很容易地用任何语言完成)。我们会定期进行检查,并相应地调整工人的动态形态。

New Relic 允许您与New Relic集成。它会定期获取最新的度量标准数据,例如平均响应时间,每分钟请求数和Apdex,以确定您的网络动态数据形成。

Heroku Logplex 是我们的最新成员。这种方法依赖于您的(和Heroku的)日志。您的日志将从Heroku的Logplex流式传输到HireFire的Logdrain,在那里它将被解析为度量数据。这使您能够以比HireFire / ResponseTime更可靠的方式自动缩放Web dynos,因为它直接从Heroku的路由器抓取数据。此方法不需要任何外部依赖项,例如New Relic。

如果您有任何疑问,请与我们联系!

答案 2 :(得分:12)

我在Rails社区中的许多朋友都使用Rails Autoscale在Heroku上进行自动缩放。运作方式如下:

  

Rails Autoscale提供了一个小型的Rack中间件,该中间件可以捕获此计时并定期将其报告回Rails Autoscale服务。这类似于“ New Relic”仅以很小的尺寸工作的方式。

Heroku本身提供的自动缩放功能仅适用于其Performance层(起价为每个dyno 250美元/月)。如果您使用的是Hobby或Standard计划,则需要找到第三方解决方案。

我喜欢Rails Autoscale的一件事是,它可以根据请求队列自动缩放应用程序。

这是一个不错的功能,尤其是为了让您省心。如果您正在睡觉,并且出现流量高峰,则无法手动调整测功机的数量。拥有可以自动扩展的工具是不错的选择。

答案 3 :(得分:10)

Heroku刚刚推出了一个自动缩放的新插件。网络dynos现在只是。

查看此帖子https://stackoverflow.com/a/14075781/484689

答案 4 :(得分:3)

我写了一个名为Heroku Vector的Heroku自动缩放引擎。它允许您根据收到的流量来扩展web和sidekiq dynos(而不是等待响应时间的延迟):

https://github.com/wpeterson/heroku-vector

您可以将其作为独立的动态过程运行。

答案 5 :(得分:0)

截至2017年1月,Heroku正式支持自动缩放。

  

自动缩放很容易设置和使用,它建议使用p95   基于您应用过去24小时响应时间的阈值。   基于响应的自动缩放可确保您的Web dyno形成   始终按照最佳效率进行调整,同时限制成本   你设定的限制。目前不包括自动缩放   使用Performance和Private web dynos的应用程序的成本。

以下是文档: https://devcenter.heroku.com/articles/scaling#autoscaling

以下是公告:https://blog.heroku.com/heroku-autoscaling