Какой рабочий Apache использовать с пассажиром и как?

У меня есть этот конфиг в моем apache2.conf

<IfModule mpm_prefork_module>
StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0
</IfModule>
# рабочий МПМ
# StartServers: начальное количество процессов сервера для запуска
# MaxClients: максимальное количество одновременных клиентских подключений
# MinSpareThreads: минимальное количество рабочих потоков, которые сохраняются
# MaxSpareThreads: максимальное количество рабочих потоков, которые сохраняются
# ThreadsPerChild: постоянное количество рабочих потоков в каждом серверном процессе
# MaxRequestsPerChild: максимальное количество запросов, которые обслуживает процесс сервера
<IfModule mpm_worker_module>
StartServers          2
MaxClients          15
MinSpareThreads      4
MaxSpareThreads      5
ThreadsPerChild      15
MaxRequestsPerChild   50000
</IfModule>

Теперь я запутался здесь.

  • Какой модуль загружается на каких условиях?
  • Парни из phusion предложили использовать рабочий модуль. Поскольку оба они присутствуют в файле Apache Conf, я должен прокомментировать модуль mpm_prefork_module или оставить его как есть?

Ниже приведен мой пассажирский файл конфигурации для Apache:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4
PassengerRuby /usr/bin/ruby1.8
PassengerMaxPoolSize 3
PassengerPoolIdleTime 999999
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0
  • Я использую только одно приложение Rails 2.3.2 на слайсе 256 МБ на slicehost. Я еще не совсем доволен производительностью. Настройки выше хороши??

3 ответа

А. запустите httpd/apache/httpd2/apache2 -l, чтобы увидеть, какой mpm загружен (хотя обычно это prefork)
б. чтобы получить рабочий модуль, вы должны установить его, хотя я никогда не делал этого раньше, но я знаю, что это либо предложение, либо предложение, они не могут сосуществовать
с. Если вы ожидаете какой-либо трафик, убедитесь, что для MaxClients (в конфигурации prefork) установлено значение около 20 (в начале), иначе ваше приложение / пассажир будет перегружено в периоды большого трафика
д. Для настройки пассажира, я бы начал с

PassengerMaxPoolSize 2
PassengerPoolIdleTime 0
RailsFrameworkSpawnerIdleTime 0
RailsAppSpawnerIdleTime 0

Что это делает, так это хранит в памяти споннер Framework, спавнер приложений и экземпляры приложений в течение максимально долгого времени, поэтому ему не нужно повторно вызывать экземпляр приложения или фреймворк после определенного периода бездействия (если ваш сайт не загружен большим количеством трафика). Это так же близко к запуску установки, как у монгрела.

Использует ли Apache prefork MPM или рабочий MPM, это опция времени компиляции. Нет способа изменить его во время выполнения, поэтому вы не можете загрузить MPM.

Директива означает "если текущий MPM равен xxx, то использовать конфигурацию внутри этого блока, в противном случае полностью игнорировать этот блок".

Поэтому, если вы хотите использовать рабочий MPM, вы должны удалить версию prefork и установить рабочую версию.

Обычно люди спрашивают, когда их VPS начинает использовать своп, это ваша ситуация? Этот поток очень полезен, используя "free" и "top" и переключаясь на MPM worker

http://forum.slicehost.com/comments.php?DiscussionID=3313

Они информативны о настройках, о которых много не говорят

http://wiki.ninjafocus.net/Ruby_on_Rails

http://programming-gone-awry.blogspot.com/2009/06/how-to-save-much-ram-when-running-rails.html

Другие вопросы по тегам