我怎样才能避免Heroku停止我的dynamic?

我定期为客户build立MVP 。 我经常在Heroku上进行部署,以便他们能够看到产品是否可以运行,并向潜在客户和投资者展示。

然后,我有一个应用程序部署在heroku上,它的作用就像一个魅力,如果不是一件小事。 该应用程序需要大约30秒的时间才能启动,而且如果没有交通stream量,heroku有一个恼人的杀死dyno的习惯。 我的客户现在正在使用该应用程序进行演示,因此负载非常低且间歇性。

我正在寻找一个解决scheme,最好是:

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

避免第一次请求需要30秒的最佳方法是什么?

    Heroku现在有一个叫做Scheduler的类似于cron的插件。 根据教程 :

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

       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. configuration调度程序每小时运行一次该任务。

      heroku addons:open scheduler

    我怀疑这是Heroku首选的方法,Heroku社区代表在演讲中展示了这个技巧。

    简单的答案:你付钱。

    飙升到两个dynos和你的应用程序不会闲置。

    如果有成本意识,那么只需在客户的演示中短时间内添加两个Web dynos。 Heroku每小时只收取0.05美元。

    或者以某种方式驱动频繁的应用stream量,所以它不会闲置。 但是,Heroku提供免费使用这么好的服务,所以为什么不给他们几分钱的时间,你需要保证响应。

    您可以在您的网站的URL上指定Pingdom检查。 作为一个奖励,你会留意停机时间,而你这样做。

    使用New Relic监控服务似乎是一个不错的select

    如何在以下文章中:

    避免与新的遗物徘徊Heroku

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

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

    超过1个networkingtesting仪的应用程序永远不会被闲置。 工作人员的动物不会被闲置。

    基本上,这发生在免费层。 如果您启动第二台测功机(即,每月支付$ 35),则测功机不会闲置。

    如果您的客户正在进行演示,即在会议期间安排了查看应用程序的情况,则在闲置一小时后才会发生空闲。 如果他不想在这种情况下支付35美元/月的费用,他可以在会议之前戳一下这个应用程序来唤醒它。

    有两个选项:

    1. 付钱

      只要你heroku scale web= 1以上的应用程序将永远不会中止,因为cjk和flurdy也在他们的答案中提到。 如果您有一个网站支付自己的账单,这是迄今为止最好的select。 如果你维护了很多网站,那么费用总和就会增加。

    2. 定期ping服务

      这个选项是有趣的。 对于低交通网站,我找不到免费的解决scheme。 Pingdom (由ceejayoz提到)对于一个站点是免费的,这样可以一次解决问题。 如果你需要更多的网站,你也可以使用Iron.io来保持你的heroku dynos活着 。 这也将很快耗尽免费层,然后你会支付Iron.io.

      如果你已经有足够的运行服务器,你可以在crontab中粘贴curl到你的站点。 这个解决scheme当然是最好的。

    让您的Heroku托pipe的网站由Google(和其他主要search引擎)索引。

    我几个月前上传的Heroku应用程序供内部使用,但必须能够访问客户端,Google已经find了该网站的(非常小的)公共部分。 尽pipe如此,在首次推出几个月之后,Google每隔70秒就会提出一次请求,足以保持dynamic连续不断。