Я запускаю redmine (приложение RoR) на своем сервере с помощью пассажира / Apache 2.2. Пассажир и Рубин используют слишком много памяти.
Есть ли более эффективный с точки зрения памяти способ запустить redmine / ruby?
Мне нужно всего лишь поддержать полдюжины пользователей Redmine. Я хочу продолжать использовать Apache, но я открыт для всех предложений, которые не «используйте вместо этого nginx / lighttpd».
(Следующие данные взяты с 512 МБ VPS, поэтому Ruby использует более 128 МБ только для Redmine)
user ....... %mem ....... process
-----------------------------------
www-data ... 13.6 0:00.65 ruby1.8
www-data ... 12.2 0:04.86 ruby1.8
www-data ... 9.4 0:04.15 apache2
www-data ... 9.0 0:13.94 apache2
www-data ... 3.2 0:00.27 apache2
root ... 2.5 0:00.23 apache2
root ... 1.9 0:01.19 ruby1.8
Итак, что для меня лучше, чем Пассажир?
Спасибо за мысли !!
Вы можете настроить, сколько процессов Rails будет запускать Apache / пассажира. Для вашего размера (3 одновременных запроса) вам должно быть хорошо с 2 процессами рельсов:
Задайте их в конфигурации apache:
PassengerMaxPoolSize 2
PassengerMaxInstancesPerApp 2
MaxPoolSize определяет, сколько экземпляров может быть запущено максимально, MaxInstancesPerApp определяет, сколько экземпляров может иметь каждое веб-приложение.
Возможно, вы захотите поиграть с:
PassengerPoolIdleTime
чтобы указать, сколько секунд экземпляр должен простаивать, прежде чем он будет выгружен. По умолчанию 300 секунд.
Я без проблем запускаю веб-приложение с довольно высоким трафиком с 3 экземплярами.
Да и еще - Ruby Enterprise Edition тоже помогает.
Вы используете Ruby Enterprise? http://www.rubyenterpriseedition.com/
Сколько одновременных запросов вам нужно поддерживать? я хотел бы использовать nginx и небольшой кластер дворняги. Таким образом, вы можете ограничить количество ресурсов, которые использует ваше приложение Ruby.
Либо используйте Ruby Enterprise Edition (рекомендуется с Passenger) или используйте Ruby 1.9, который также загружается быстрее.
Мне больше удалось запустить mongrels / mongrel_cluster с apache proxypass для redmine. Ему не нужна такая высокая производительность (это куча очень больших / медленных процессов, и они, как правило, вызывают внешние процессы поверх этого. Вы можете попробовать его в тестовой ситуации и посмотреть. Он также был мертв - мне просто настроить.