Phusion Passenger Не всегда неблокируется с помощью Rails? - PullRequest
0 голосов
/ 19 июля 2010

Как Пассажир решает, когда начинать новый процесс, и могу ли я каким-либо значимым образом настроить, сколько процессов он должен обрабатывать (кроме «умных» и «консервативных» флагов в конфигурации?) Как вариант, есть ли способ? отладить, почему приложение rails, работающее под Phusion, внезапно зависло?

Справочная информация:

Я использую Phusion Passenger с сервером Apache2, и по большей части все идет хорошо. Я меньше беспокоюсь о загрузке и больше беспокоюсь о блокировке: обычный монгрел свяжет все приложение, если он использует метод длинного контроллера (скажем, метод, который спит в течение десяти секунд), и никакая другая веб-страница не может обслуживаться до метод завершен. С помощью Passenger я могу использовать тот же метод, но при этом открыть новый браузер и без проблем выполнить быструю загрузку страниц того же приложения.

ИНОГДА.

И это «иногда» является проблемой. Если метод занимает достаточно много времени (в моем случае, вызов внешней сети, который никогда не возвращается), все приложение снова будет зависать, даже при разветвлении всего потока или что-то еще.

Насколько я понимаю, способ работы Пассажира заключается в том, что он как бы разветвляет новые экземпляры рельсов каждый раз, когда это необходимо, обычно в условиях одновременного подключения слишком большого количества людей.

Хотя, похоже, он работает с длинными методами ... но я не вижу ссылок на то, как и почему (или, что более важно, как настроить или настроить этот процесс). Или даже как выяснить, в чем может быть проблема (Нужно ли разрешать Phusion отключаться от БОЛЬШЕ потоков, не работает ли он с длинными методами в течение определенного промежутка времени?)

1 Ответ

0 голосов
/ 20 сентября 2010

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

Если все существующие процессы помечены как занятые, Phusion Passenger запускает новый процесс, если не достигнуто ограничение MaxPoolSize, в этом случаеподождите, пока процесс не станет занятым.

Что именно вы хотите настроить?Что именно вы подразумеваете под "заморозить"?Возможно, вы имеете в виду «проблему с медленной очередью беспорядков»?Phusion Passenger имеет функцию Global Queuing, которая решает эту проблему.Проблема и ее решение подробно документированы в руководстве Phusion Passenger, и, начиная с версии 3.0.0 бета, эта опция включена по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...