Назад | Перейти на главную страницу

Запуск приложения Ruby on Rails на Apache + Passenger == при большом объеме памяти

Я запускаю 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. Ему не нужна такая высокая производительность (это куча очень больших / медленных процессов, и они, как правило, вызывают внешние процессы поверх этого. Вы можете попробовать его в тестовой ситуации и посмотреть. Он также был мертв - мне просто настроить.