私は [〜#〜] mvp [〜#〜] をクライアント向けに定期的に構築しています。 Herokuにデプロイして、製品が機能するかどうかを確認し、見込み客や投資家にデモすることがよくあります。
次に、アプリケーションをherokuにデプロイしました。これは、ちょっとしたことではないにしても、魅力のように機能します。アプリの起動には約30秒かかり、herokuはトラフィックを取得できない場合、dynoを殺すという厄介な癖を持っています。私のクライアントは現在、アプリケーションをデモ目的で使用しているため、負荷は非常に低く断続的です。
私は次のような解決策を探しています:
最初のリクエストに30秒かかるのを避けるための最良の方法は何ですか?
Herokuには、Schedulerと呼ばれるcronと同等のアドオンがあります。に基づく チュートリアル :
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
Herokuコントロールパネルまたはコンソールから「スケジューラー」アドオンを追加します。
heroku addons:add scheduler:standard
このタスクを1時間ごとに実行するようにスケジューラを構成します。
heroku addons:open scheduler
Herokuコミュニティの担当者が講演でこの手法を示したため、これがHerokuの推奨される方法だと思います。
簡単な答え:あなたはそれを支払う。
最大2つのダイノをランプすると、アプリはアイドル状態になりません。
コストを意識している場合は、クライアントのデモの前後で、短期間に2つのWebダイノまでしか増加しません。 Herokuの料金は1時間あたりわずか0.05ドルです。
または、アプリに頻繁にトラフィックを送り、アイドル状態にならないようにします。しかし、Herokuは無料で使用できる素晴らしいサービスを提供しているので、保証された応答が必要な期間に数セント投げてみませんか。
PingdomチェックをサイトのURLに向けることができます。ボーナスとして、そうする間、あなたはダウンタイムから目を離さないでしょう。
それはFAQの最後にある「ダイノアイドリングとは何ですか?」です。
https://devcenter.heroku.com/articles/dynos
複数のWebダイノを持つアプリがアイドル状態になることはありません。労働者のダイノは決して怠けていません。
基本的に、これは無料枠で発生します。 2番目のdynoを起動した場合(つまり、月額$ 35を支払う場合)、dynoはアイドル状態になりません。
クライアントがプレゼンテーションを行っている場合、つまり、会議中にアプリケーションをスケジュールで確認している場合、アイドリングは1時間非アクティブになるまで発生しません。このシナリオで月額35ドルを支払う気がない場合は、会議の前にアプリケーションを突いてウェイクアップできます。
HerokuでホストされているサイトをGoogle(およびその他の主要な検索エンジン)でインデックスに登録します。
数か月前に内部使用のためにアップロードしたHerokuアプリですが、クライアントがアクセスできる必要がありますが、Googleとサイトの(非常に小さな)公開セクションでインデックスが作成されています。それにもかかわらず、最初にそれを上げてから数ヶ月後、Googleは70秒ごとに約1つのリクエストを行っています。これはdynoを継続的にアクティブに保つのに十分です。
2つのオプションがあります:
それを支払う
heroku scale web=
上記1 アプリが中途半端になることはありません 、cjkとflurdyも回答に記載されています。独自の料金を支払っている単一のサイトがある場合、これは断然最良のオプションです。ただし、多くのサイトを維持している場合は、コストが加算されます。
サービスに定期的にpingを実行します
このオプションは興味深いものです。交通量の少ないサイトでは、私が見つけた無料の解決策はありません。 Pingdom (ceeejayozによって言及されたように)は、1つのサイトで無料です。より多くのサイトが必要な場合は、 Iron.ioを使用してheroku dynoを存続させる を使用することもできます。ただし、これもすぐに無料枠がなくなり、Iron.ioに支払うことになります。
幸運なことにサーバーが既に稼働している場合は、crontabでサイトにカールを付けることができます。もちろん、このソリューションは最適に拡張できます。