Rails продолжает перезагружаться в производстве Passenger
Я запускаю приложение, которое запускает процесс Rufus Scheduler в инициализаторе. Приложение работает с Passenger в работе, и я заметил несколько странных действий:
Во-первых, чтобы перезапустить сервер и убедиться, что инициализатор запущен, вам нужно touch tmp/restart.txt
и загрузите приложение в браузере. В этот момент инициализатор срабатывает. Ужасно то, что если вы делаете только прикосновения, процессы, запланированные Rufus, сбрасываются и не переносятся, пока вы не загрузите приложение в браузере.
С этим одним я могу справиться. Но это приводит ко второй проблеме: я заметил, что запланированный процесс не запустился, поэтому я загружаю страницу, и вдруг файл журнала сообщает мне, что он запускает инициализаторы, как будто я перезагружаюсь. Итак, в какой-то момент Passenger случайно перезагружается, как если бы я коснулся tmp / restart.txt и уничтожил мои запланированные процессы.
У меня невероятно плохое понимание интеграции Passenger и Rails, поэтому я не знаю, является ли эта случайная перезагрузка аберрантной или частью архитектуры. Кто-нибудь может предложить какую-то мудрость в этой ситуации?
1 ответ
То, что вы описываете, - это способ работы Пассажира. Он порождает новые экземпляры приложения, когда трафик их оправдывает, и закрывает их после периодов бездействия для освобождения ресурсов.
Вам следует прочитать документацию по пассажирам, в частности, раздел "Управление ресурсами и оптимизация". Существуют настройки, которые могут предотвратить закрытие приложения Пассажиром, если вы этого хотите.
Используя параметр PassengerPoolIdleTime, вы можете сохранить хотя бы один процесс, но вы почти наверняка захотите, чтобы Passenger запускал другие экземпляры приложения по мере необходимости. В этой теме в Группе Google Rufus Scheduler упоминается использование файлов блокировки для предотвращения запуска планировщика более чем одним процессом, что может оказаться полезным для вас.