Rails продолжает перезагружаться в производстве Passenger - PullRequest
2 голосов
/ 11 февраля 2010

Я запускаю приложение, которое запускает процесс Rufus Scheduler в инициализаторе. Приложение работает с Passenger в работе, и я заметил несколько странных действий:

Во-первых, чтобы перезапустить сервер и убедиться, что инициализатор запущен, вам нужно одновременно touch tmp/restart.txt и загрузить приложение в браузер. В этот момент инициализатор срабатывает. Ужасно то, что если вы делаете только прикосновения, процессы, запланированные Rufus, сбрасываются и не переносятся, пока вы не загрузите приложение в браузер.

С этим одним я могу иметь дело. Но это приводит ко второй проблеме: я заметил, что запланированный процесс не запустился, поэтому я загружаю страницу, и вдруг файл журнала сообщает мне, что он запускает инициализаторы, как будто я перезагружаюсь. Итак, в какой-то момент, Пассажир случайно перезагружается, как если бы я коснулся tmp / restart.txt и уничтожил мои запланированные процессы.

У меня невероятно плохое понимание интеграции Passenger и Rails, поэтому я не знаю, является ли эта случайная перезагрузка аберрантной или частью архитектуры. Кто-нибудь может предложить какую-то мудрость в этой ситуации?

1 Ответ

2 голосов
/ 12 февраля 2010

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

Вам следует прочитать документацию для пассажиров, в частности, раздел Управление ресурсами и оптимизация . Существуют настройки, которые могут предотвратить закрытие приложения пассажиром, если вы этого хотите.

Используя параметр PassengerPoolIdleTime, вы можете сохранить хотя бы один процесс, но вы почти наверняка захотите, чтобы Passenger запускал другие экземпляры приложения по мере необходимости. В этой теме в Группе Google Планировщика Rufus упоминается использование файлов блокировки для предотвращения запуска планировщика несколькими процессами, что может быть полезно для вас.

...