我怎样才能避免 heroku 停止我的 dyno?

我怎样才能避免 heroku 停止我的 dyno?

我建立最有价值球员定期为客户提供产品。我经常在 Heroku 上部署产品,这样他们就可以查看产品是否有效,并向潜在客户和投资者进行演示。

然后我在 heroku 上部署了一个应用程序,它运行得很好,除了一个小问题。该应用程序需要大约 30 秒才能启动,并且 heroku 有一个烦人的习惯,即如果没有流量,就会关闭 dyno。我的客户现在正在将该应用程序用于演示目的,因此负载极低且断断续续。

我正在寻找一种更好的解决方案:

  • 成本效益
  • 可以同时应用于多个应用程序

避免第一个请求花费 30 秒的最佳方法是什么?

答案1

Heroku 现在有一个与 cron 等效的附加组件,名为调度器。 基于教程

  1. scheduler.rake在 app/lib/tasks 中,添加一个名为并定义以下任务的文件:

    desc "This task is called by the Heroku cron add-on"
    task :call_page => :environment do
       uri = URI.parse('http://www.myapp.org/')
       Net::HTTP.get(uri)
    end
    
  2. 从 Heroku 控制面板或控制台添加“Scheduler”插件:

    heroku addons:add scheduler:standard

  3. 配置计划程序以每小时运行此任务。

    heroku addons:open scheduler

我怀疑这是 Heroku 首选的方法,因为 Heroku 社区代表在一次演讲中演示了这种技术。

答案2

简单的回答:你得付钱。

增加到两个测功机后,您的应用程序将不会空转。

如果注重成本,则只需在客户演示期间短时间内增加两个 Web dyno。Heroku 每小时仅收取 0.05 美元。

或者以某种方式频繁地向应用程序发送流量,这样它就不会闲置。但是 Heroku 提供了如此出色的免费服务,所以为什么不在需要保证响应的时间段内给他们几分钱呢。

答案3

您可以将 Pingdom 检查指向您网站的 URL。这样做还有一个好处,就是您可以密切关注停机时间。

答案4

它在常见问题解答中,最后,“什么是测功机空转?”

https://devcenter.heroku.com/articles/dynos

拥有超过 1 个 Web 测功机的应用程序永远不会空闲。Worker 测功机永远不会空闲。

基本上,这种情况发生在免费套餐中。如果您启动第二个测功机(即每月支付 35 美元),测功机将不会闲置。

如果您的客户正在做演示,即在会议期间按计划查看应用程序,则空闲状态要等到一小时不活动后才会发生。如果他不想在这种情况下支付每月 35 美元,他可以在会议前点击应用程序以将其唤醒。

相关内容