web-dev-qa-db-ja.com

Herokuがdynoを停止しないようにするにはどうすればよいですか?

私は [〜#〜] mvp [〜#〜] をクライアント向けに定期的に構築しています。 Herokuにデプロイして、製品が機能するかどうかを確認し、見込み客や投資家にデモすることがよくあります。

次に、アプリケーションをherokuにデプロイしました。これは、ちょっとしたことではないにしても、魅力のように機能します。アプリの起動には約30秒かかり、herokuはトラフィックを取得できない場合、dynoを殺すという厄介な癖を持っています。私のクライアントは現在、アプリケーションをデモ目的で使用しているため、負荷は非常に低く断続的です。

私は次のような解決策を探しています:

  • 費用対効果の高い
  • 複数のアプリに同時に適用できます

最初のリクエストに30秒かかるのを避けるための最良の方法は何ですか?

6
iwein

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コントロールパネルまたはコンソールから「スケジューラー」アドオンを追加します。

    heroku addons:add scheduler:standard

  3. このタスクを1時間ごとに実行するようにスケジューラを構成します。

    heroku addons:open scheduler

Herokuコミュニティの担当者が講演でこの手法を示したため、これがHerokuの推奨される方法だと思います。

7
Brian Jordan

簡単な答え:あなたはそれを支払う。

最大2つのダイノをランプすると、アプリはアイドル状態になりません。

コストを意識している場合は、クライアントのデモの前後で、短期間に2つのWebダイノまでしか増加しません。 Herokuの料金は1時間あたりわずか0.05ドルです。

または、アプリに頻繁にトラフィックを送り、アイドル状態にならないようにします。しかし、Herokuは無料で使用できる素晴らしいサービスを提供しているので、保証された応答が必要な期間に数セント投げてみませんか。

3
flurdy

PingdomチェックをサイトのURLに向けることができます。ボーナスとして、そうする間、あなたはダウンタイムから目を離さないでしょう。

2
ceejayoz

New Relic 監視サービスを使用することは良いオプションのようです...

次の投稿の方法:

New RelicのpingでHerokuのアイドリングを回避する

1
Vassilis

それはFAQの最後にある「ダイノアイドリングとは何ですか?」です。

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

複数のWebダイノを持つアプリがアイドル状態になることはありません。労働者のダイノは決して怠けていません。

基本的に、これは無料枠で発生します。 2番目のdynoを起動した場合(つまり、月額$ 35を支払う場合)、dynoはアイドル状態になりません。

クライアントがプレゼンテーションを行っている場合、つまり、会議中にアプリケーションをスケジュールで確認している場合、アイドリングは1時間非アクティブになるまで発生しません。このシナリオで月額35ドルを支払う気がない場合は、会議の前にアプリケーションを突いてウェイクアップできます。

0
cjc

HerokuでホストされているサイトをGoogle(およびその他の主要な検索エンジン)でインデックスに登録します。

数か月前に内部使用のためにアップロードしたHerokuアプリですが、クライアントがアクセスできる必要がありますが、Googleとサイトの(非常に小さな)公開セクションでインデックスが作成されています。それにもかかわらず、最初にそれを上げてから数ヶ月後、Googleは70秒ごとに約1つのリクエストを行っています。これはdynoを継続的にアクティブに保つのに十分です。

0
Michael Hampton

2つのオプションがあります:

  1. それを支払う

    heroku scale web=上記1 アプリが中途半端になることはありません 、cjkとflurdyも回答に記載されています。独自の料金を支払っている単一のサイトがある場合、これは断然最良のオプションです。ただし、多くのサイトを維持している場合は、コストが加算されます。

  2. サービスに定期的にpingを実行します

    このオプションは興味深いものです。交通量の少ないサイトでは、私が見つけた無料の解決策はありません。 Pingdom (ceeejayozによって言及されたように)は、1つのサイトで無料です。より多くのサイトが必要な場合は、 Iron.ioを使用してheroku dynoを存続させる を使用することもできます。ただし、これもすぐに無料枠がなくなり、Iron.ioに支払うことになります。

    幸運なことにサーバーが既に稼働している場合は、crontabでサイトにカールを付けることができます。もちろん、このソリューションは最適に拡張できます。

0
iwein