Heroku Dyno / рабочий падает при запуске - PullRequest
3 голосов
/ 12 марта 2012

У меня есть приложение, написанное на Rails, развернутое на Heroku. Раньше я работал над 1 веб-динамо, но сегодня я опубликовал приложение, трафик довольно большой, поэтому я решил увеличить до 4 веб-дина и 1 рабочий динам. Я не знаю, почему всегда, когда я делаю heroku ps, это показывает:

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

Рабочий dyno падает сразу после 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

Вот и все. У тебя есть идеи почему? Веб-динос работают правильно. Нужно ли что-то настраивать в моем приложении для использования рабочих dynos?

Буду также признателен, если вы объясните мне человеческими словами, какова логика разделения платформы heroku на паутину и рабочие динамо? Я прочитал документацию несколько раз, но все еще думаю, что упустил смысл понять ее, поскольку вырос в мире, где у вас были ограничения на хранение и прочее.

1 Ответ

2 голосов
/ 12 марта 2012

Рабочие используются для фоновой обработки, например, для отправки электронных писем, извлечения данных из какого-либо веб-сервиса, в общем, для любой задачи, которая занимает много времени, и вы не хотите, чтобы ваш пользователь ждал ее, чтобы увидеть страницу,Это идея, которую следует использовать для повышения производительности, потому что если вы используете веб-dyno для отправки примерно 10 электронных писем, это значит, что они не отвечают на запросы пользователей, поэтому вы не можете обрабатывать так много пользователей.

Таксы должны быть поставлены в очередь, и работники должны проверить эту очередь, чтобы выполнить эту работу!

Таким образом, ваш работник аварийно завершает работу, потому что вы не определили какую-либо работу, поэтому он может ждать очередей на этой работе.Обратитесь к этому гему за информацией о том, как устанавливать задачи и задачи в очереди.

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

...