使用Heroku时,如果需要的话, AUTO 如何在网络dynos方面进行扩展?假设我们每2-3分钟就会吸引100名并发用户。如果我们的应用程序卡在5-6网络dynos上。我们搞砸了。
其次,我无法在24小时内监控流量,以确定是否需要向上或向下扩展。
到目前为止,我见过http://hirefireapp.com/和http://www.heroscale.com/ 关于这两个的任何建议?
答案 0 :(得分:25)
heroku本身不这样做的原因是它是一个非常复杂的问题需要解决。
例如,想象一下上面的情景,你突然开始看到一个队列形成并想要使dynos斜坡上升。你又开了十个。然而,这不是一个dyno问题,你的数据库运行缓慢,所以现在你有更多的dynos坐着等待数据库,现在对它有更多的需求。
虽然那里有自动缩放产品,但我没有尝试过任何一种产品,并且完全相信目前只有人才可以正确地进行缩放。您的里程可能会有所不同。
我在过去发现,将资源设置为预期的使用级别(可能高于当前使用率)往往效果最好,排除大量流量涌入(例如黑客新闻等)
答案 1 :(得分:24)
我建立了HireFire,并希望分享一些最新信息:
HireFire能够根据各种指标自动扩展您的网络和工作人员动态。我们目前支持以下指标来源/类型:
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现在只是。
答案 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