Есть ли способ порождать процессы Unicorn и полностью загружать их, прежде чем они будут доступны для обработки запросов? - PullRequest
1 голос
/ 14 февраля 2012

Я использую Unicorn на Heroku. Я замечаю, когда мы масштабируем веб-динамо. К этим новым веб-динамам обращаются сразу после их появления. В логах мы получаем:

Request timeout" error with 30 seconds limit (i.e. service=30000ms)

Как только динамо запускается, на него отправляется трафик. Если Unicorn по-прежнему запускает дочерние процессы при поступлении этих запросов, то они, скорее всего, прекратят работу, особенно если вашему приложению требуется время для загрузки.

Есть ли способ порождать дочерние процессы Unicorn без обращения к ним по запросам, пока приложение не будет полностью загружено?

1 Ответ

0 голосов
/ 14 февраля 2012

Это на самом деле что-то еще и то, с чем я сталкивался раньше.

По сути, когда вы масштабируете, вы видите, что ваш динамо создается и ваш слаг развертывается на нем.В этот момент ваш слизень инициализирован.Сетка маршрутизации начнет посылать запросы через момент, когда это произошло, так как он видит динамо как готовое к работе.

Однако (и именно здесь я обнаружил проблему), потребуется время для вашегоприложение раскручивается, чтобы ответить на запрос (Unicorn работает, Rails все еще инициализируется), и вы получаете 30-секундный тайм-аут.

Единственный способ, которым я мог это исправить, - запустить приложение менее чем за30 секунд, что я, наконец, достиг, обновляя до текущей версии Rails.Я также обнаружил некоторые улучшения, обновив до , попробуйте запустить на Ruby 1.9.3

...