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

Какой стек RoR рекомендуется на ubuntu 10.04?

Я не могу найти четких ответов / методов по этому поводу. Как видно в другом месте, пассажир и RoR под apache съедают барана на моем VPS.

Я пробовал множество стеков и реализаций, в настоящее время опираясь на неоптимальную конфигурацию apache / cgi / rails, которая поменяла использование оперативной памяти на процессорное время и медленный ответ на запросы.

Может ли кто-нибудь порекомендовать эффективный и, желательно, простой в администрировании метод настройки приложений rails на сервере ubuntu 10.04?

Вот метод, который я использовал.

  1. Установите многопоточные Apache и APR и отсортируйте библиотеки Apache dev.
  2. Создайте пользователя развертывания, а затем установите RVM в развертывании пользователей хомедир
  3. Теперь установите REE 1.8.7 или Ruby 1.9.2 через rvm. Оба используют меньше памяти, чем стандартная 1.8.7, и вам придется выбирать, какой из них лучше всего работает с вашим приложением.
  4. Теперь удалите пакеты Ubuntu mod_passenger и установите Passenger как драгоценный камень через своего пользователя развертывания, используя RVM с рубином, который вы хотите использовать. Убедитесь, что вы также создаете двоичные файлы Passenger, используя RVM. Убедитесь, что вы устанавливаете правильный Passenger для системы: 2.x или 3.x.
  5. Создайте /etc/apache2/mods-available/passenger2.conf или пассажира3.conf, а также соответствующий файл пассажира.load, чтобы они не конфликтовали с пассажиром.conf, который использует пакет mod_passenger. Убедитесь, что вы правильно скопировали вывод сборки Passenger, а также убедитесь, что вы правильно указываете пути RVM для своей версии Passenger, которая будет очень незначительно зависеть от версии 2.x или 3.x.

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

# rvm and passenger paths
PassengerRoot /home/deploy/.rvm/gems/ruby-1.9.2-p136/gems/passenger-3.0.2
PassengerRuby /home/deploy/.rvm/wrappers/ruby-1.9.2-p136/ruby

# set max instances
PassengerMaxPoolSize 6
# Always have one instance running
PassengerMinInstances 1
# recyle an instance after 10k requests
PassengerMaxRequests 10000
# check tmp for restarts one request per 10 secs rather than every request
PassengerStatThrottleRate 10

# don't shutdown any of the spawners
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

Моя конфигурация пытается постоянно поддерживать активный экземпляр и использует немного больше памяти, не закрывая спаунеры. Вы хотите использовать очень мало оперативной памяти, но не хотите ждать 15-30 секунд, чтобы обслужить запрос, потому что весь процесс Rack был остановлен. В вашем случае я бы попробовал что-то вроде следующего.

PassengerMaxPoolSize 2
PassengerMinInstances 1
PassengerPoolIdleTime 3600
RailsFrameworkSpawnerIdleTime 1800
RailsAppSpawnerIdleTime 600
PassengerStatThrottleRate 10

Если все выглядит неплохо, вы можете уменьшить настройки и посмотреть, как это сработает для вас.