在我的站点中为流量添加临时Dyno(Heroku Rails应用程序)

时间:2016-01-20 02:55:38

标签: ruby-on-rails ruby-on-rails-4 heroku request dyno

我预计明天(按等)流量会大幅增加到我的网站。我希望能够在不降低流量的情况下管理流量。我知道我必须添加dyno&s,并且成本不会太高,因为只是暂时阻止队列。

我正在使用New Relic Add-On来监控

这篇文章非常有用:https://serverfault.com/questions/394602/how-to-prepare-for-a-huge-spike-in-traffic-for-launching-a-website-hosted-on-her

然而,在阅读了帖子并倾注了heroku文档后,我无法弄清楚我是如何实际做到这一点的......

我可以运行什么命令,或者从哪个界面启动新的dyno来处理添加的网络流量?然后,当流量恢复到正常水平时,我运行什么命令或从哪个界面消除额外的dyno?

Heroku谈论了许多不同类型的dyno等,但我不知道我应该使用哪一个,然后如何实际启动一个新的。

1 个答案:

答案 0 :(得分:1)

Heroku有一个platform-api gem,在这种情况下对你有用。首先将gem添加到Gemfile并安装它。

gem platform-api

安装完成后,设置heroku客户端,最好是在初始化程序中

$heroku = PlatformAPI.connect(ENV['HEROKU_API_KEY', default_headers: {'Accept' => 'application/vnd.heroku+json; version=3'})

您可以找到如何获取Heroku API KEY here

现在,到缩放部分。我猜你有一些内部指标来决定何时扩展(按进程数,请求数等)。以下命令将扩大您需要的动态数量,

$heroku.formation.update(APP_NAME, PROCESS_NAME, {quantity: DYNO_COUNT})

这将在需要时将应用程序指定的进程缩放为X个dynos。

您可以使用相同的命令缩减动力学数量。此外,下面的命令将帮助您获得当前为特定过程配置的dynos数量

info = $heroku.formation.info(APP_NAME, PROCESS_NAME)
info['quantity']

要获取为您的应用配置的所有dynos的数量,请使用

$heroku.app.info(APP_NAME)

修改

如果您希望手动执行此操作,则可以在heroku的仪表板中执行此操作。或者,如果您更喜欢命令行,请安装heroku toolbelt,以下是扩展应用程序的命令。

heroku ps:scale process_name=dyno_count -a app_name

获取配置的dynos列表

heroku ps -a app_name