Моему пассажирскому приложению Rails иногда требуется долгое время для загрузки - PullRequest
6 голосов
/ 24 февраля 2009

Я использую Apache + Passenger для размещения некоторых приложений Rails. Кажется, что-то идет в спящем режиме, когда нет запроса на более длительное время. Затем загрузка сайта занимает 10-20 секунд. Чувствуется, что есть что-то, что должно проснуться, если не было запросов в течение более длительного времени.

Как я могу это исправить? У меня достаточно оперативной памяти, поэтому не должно быть никаких проблем, если все, что ложится спать, просто бодрствует. ;)

Ответы [ 4 ]

10 голосов
/ 24 февраля 2009

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

По умолчанию установлено значение 300, но вы можете попытаться установить большее значение и посмотреть, поможет ли это.

1 голос
/ 13 октября 2010

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

1 голос
/ 24 февраля 2009

Кроме того, если вы используете общий хост и не можете изменить этот параметр, вы всегда можете написать скрипт cron, который будет посещать ваш сайт раз в x секунд (где x немного меньше, чем PassengerPoolIdleTime), и обновлять аналитику. пакет для игнорирования запросов от IP-адреса блока, который выполняет опрос.

0 голосов
/ 18 октября 2010

@ x0ne, вы можете установить PoolIdleTime (pool_idle_time в nginx) в глобальной конфигурации сервера. В моей установке Nginx это /opt/nginx/conf/nginx.conf.

Вот часть документации пассажира, которая охватывает PoolIdleTime: http://www.modrails.com/documentation/Users%20guide.html#PassengerPoolIdleTime

...