Моему пассажирскому приложению powered Rails иногда требуется много времени для загрузки


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

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

4 6

4 ответа:

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

Значение по умолчанию равно 300, но вы можете попробовать установить более высокое число и посмотреть, поможет ли это.

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

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

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

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