2012-03-11 6 views
3

私は、Heroku上に配置されたRailsで書かれたアプリケーションを持っています。以前は1つのweb dynoで作業していましたが、今日はアプリを公開しています。トラフィックはかなり大きいので、4つのWeb dynosと1つのworker dynosに増やすことにしました。私はheroku psを行うときに、それは示して、なぜいつも私にはわからない:Heroku dyno/workerが起動時にクラッシュする

Process State   Command        
-------- -------------- --------------------------------- 
web.1  up for 22s  bundle exec rails server -p $PORT 
web.2  up for 36s  bundle exec rails server -p $PORT 
web.3  up for 25s  bundle exec rails server -p $PORT 
web.4  up for 22s  bundle exec rails server -p $PORT 
worker.1 crashed for 7s bundle exec rake jobs:work 

ワーカーダイノはheroku scale worker=1直後にクラッシュします。ログは次のようになります。

2012-03-11T23:12:18+00:00 heroku[worker.1]: Starting process with command `bundle exec rake jobs:work` 
2012-03-11T23:12:19+00:00 heroku[worker.1]: State changed from starting to up 
2012-03-11T23:12:22+00:00 app[worker.1]: rake aborted! 
2012-03-11T23:12:22+00:00 app[worker.1]: Don't know how to build task 'jobs:work' 
2012-03-11T23:12:22+00:00 app[worker.1]: 
2012-03-11T23:12:22+00:00 app[worker.1]: (See full trace by running task with --trace) 
2012-03-11T23:12:23+00:00 heroku[worker.1]: Process exited with status 1 
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from up to crashed 
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from crashed to created 
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from created to starting 
2012-03-11T23:12:32+00:00 heroku[worker.1]: Starting process with command `bundle exec rake jobs:work` 
2012-03-11T23:12:32+00:00 heroku[worker.1]: State changed from starting to up 
2012-03-11T23:12:36+00:00 app[worker.1]: rake aborted! 
2012-03-11T23:12:36+00:00 app[worker.1]: Don't know how to build task 'jobs:work' 
2012-03-11T23:12:36+00:00 app[worker.1]: 
2012-03-11T23:12:36+00:00 app[worker.1]: (See full trace by running task with --trace) 
2012-03-11T23:12:37+00:00 heroku[worker.1]: Process exited with status 1 
2012-03-11T23:12:37+00:00 heroku[worker.1]: State changed from up to crashed 

これはそれです。理由は何ですか? Webダイノスが適切に動作しています。ワーカーダイノスを使用するために私のアプリに何かを設定する必要がありますか?

私は人間の言葉で私を説明することができれば、私はherokuプラットフォームをwebとworkerのdynosに分割する背後にある論理は何かを説明することもできます。私はドキュメンテーションの回数を読んだことがありますが、私はあなたがあなたのストレージの限界と物事を持っていた世界で育ったときにそれを理解するためのポイントを逃したと思う。

答えて

2

労働者は、一般的に、それは時間がかかるし、あなたがそれを見ることのために、ユーザーが待ちたくない任意のタスクのためだ、いくつかのWebサービスからデータを取得、電子メールの送信、例えば、バックグラウンド処理のために使用されていますページ。 これは、10個の電子メールのように送信するためにWeb dynosを使用している場合、ユーザーの要求に応答していない時間なので、多くのユーザーを処理できないため、パフォーマンスに使用する必要があります。

タクをキューに入れる必要があり、作業者はキューをチェックしてそのジョブを完了させる必要があります。

ジョブが定義されていないため、ワーカーがクラッシュするため、ジョブのキューを待つことができます。ジョブとキューのタスクを設定する方法については、このgemを確認してください。

https://github.com/defunkt/resque

それはcronジョブのように、いくつかのタスクをスケジュールすることですために労働者を使用することができますもう一つ。それを助ける宝石はここにあります。

https://github.com/javan/whenever

私は非常に多くのことを説明しRailsCasts

http://railscasts.com/episodes/171-delayed-job

http://railscasts.com/episodes/271-resque

+0

にこれもビデオを視聴することをお勧めします。その答えをどうもありがとう! –

+0

私は助けることができてうれしいです。私の英語力はそれを説明するのに十分ではなかったのではないかと心配しました。 –

関連する問題