Что происходит, так это то, что ваш # значительно ускоряет время всплытия - если ваше приложение совместимо. # RMagick кажется несовместимым с умным нерестом # Старые версии Пассажира, называемые этим RailsSpawnMethod PassengerSpawnMethod smart # Держите экземпляры приложений живыми дольше. Значение по умолчанию - 300 (секунд). PassengerPoolIdleTime 1000 # Держите спасателей в живых, что ускоряет создание нового прослушивателя приложений # после периода бездействия за счет памяти. # Старые версии Passenger называются RailsAppSpawnerIdleTime PassengerMaxPreloaderIdleTime 0 # На всякий случай, когда вы пропускаете память, перезапустите прослушиватель # после обработки 5000 запросов PassengerMaxRequests 5000 и / или ApplicationSpawners выходят из строя из-за тайм-аута. Чтобы обработать ваш новый запрос, Пассажир должен запустить новую копию вашего приложения, которая может занять несколько секунд даже на быстрой машине. Чтобы устранить проблему, есть несколько параметров конфигурации Apache, которые вы можете использовать для сохранения своего приложения.
Вот конкретно, что я сделал на своих серверах. Параметры PassengerSpawnMethod и PassengerMaxPreloaderIdleTime являются наиболее важными параметрами конфигурации в вашей ситуации.
Application
Используя «умный» режим нереста и выключение PassengerMaxPreloaderIdleTime, Passenger будет хранить 1 копию вашего приложения в памяти все время (после первого запроса после запуска Apache). Из этой копии Application
выйдут отдельные слушатели fork
, что является супер-дешевой операцией. Это происходит так быстро, что вы не можете определить, было ли ваше приложение вынуждено появляться слушателем.
Если ваше приложение несовместимо с умным нерестом, я бы рекомендовал хранить большой PassengerPoolIdleTime и периодически нажимать на ваш сайт, используя завиток и крону или monit или что-то, чтобы обеспечить слушателю жизнь.
Руководство пользователя для пассажиров представляет собой удивительную ссылку для этих и других параметров конфигурации.
edit : Если ваше приложение несовместимо с умным нерестом, есть несколько новых вариантов , которые очень приятны
# Automatically hit your site when apache starts, so that you don't have to wait
# for the first request for passenger to "spin up" your application. This even
# helps when you have smart spawning enabled.
PassengerPreStart http://myexample.com/
PassengerPreStart http://myexample2.com:3500/
# the minimum number of application instances that must be kept around whenever
# the application is first accessed or after passenger cleans up idle instances
# With this option, 3 application instances will ALWAYS be available after the
# first request, even after passenger cleans up idle ones
PassengerMinInstances 3
Таким образом, если вы комбинируете PassengerMaxPreloaderIdleTime 0 и PassengerMinInstances, Passenger будет разворачивать 3 экземпляра сразу после загрузки apache и всегда будет содержать как минимум три экземпляра, поэтому ваши пользователи редко (если когда-либо) будут видеть задержку.
Или, если вы уже используете умный нерест (рекомендуется) PassengerPreStart
, вы можете добавить его, PassengerPreStart
чтобы получить дополнительную выгоду от немедленного запуска.
Большое спасибо героям на phusion.nl !