О том, сколько сокращения памяти занимает nginx по сравнению с Apache2? - PullRequest
2 голосов
/ 08 апреля 2011

Мне интересно, стоит ли переносить приложение Rails из Apache2 + Passenger в Nginx + Passenger.Основная причина, по которой мы это сделаем, - это освободить ОЗУ или обработать больше запросов на заданный объем ОЗУ.

Кто-нибудь знает приблизительно, насколько более эффективен Nginx + Passenger при использовании оперативной памяти?

1 Ответ

7 голосов
/ 08 апреля 2011

Ответ сильно зависит от:

  • Модули веб-сервера, которые вы включили
  • Реализация Ruby, которую вы используете (например, Ruby Enterprise Edition против MRI)
  • Шаблоны трафика вашего приложения.

Настройка nginx + Passenger действительно проста. Просто быстро установите каждую среду на облачных серверах или виртуальных машинах и запустите некоторые инструменты для их тестирования.

Вообще говоря, самым большим потребителем ОЗУ является ваше Rails-приложение, а не веб-сервер. Если вы беспокоитесь об использовании оперативной памяти, ваше время будет лучше потрачено на сравнение реализаций Ruby или уменьшение количества гемов / плагинов / библиотек, используемых вашим кодом, или уменьшение количества используемых вами модулей веб-сервера.

Кто-то провел тест использования памяти Nginx и Apache для каждого одновременного соединения. Nginx - явный победитель. Но следует отметить, что самое высокое использование памяти на этом графике составляет всего ~ 40 МБ при примерно 4000 одновременных подключений. 40 МБ занимает меньше места, чем даже один экземпляр Rails в большинстве случаев, и маловероятно, что вы сможете выполнить 4000 одновременных запросов rails на одном сервере. Поэтому стоит вторично перейти на Nginx, но, прежде всего, вам следует переключиться на Ruby Enterprise Edition , если вы этого еще не сделали, а затем попытаться уменьшить объем памяти вашего приложения, поскольку ваше приложение Rails будет использовать значительно больше памяти, чем любой из этих веб-серверов.

Например, я запускаю Apache / Passenger / REE на производстве, и даже с улучшенным объемом памяти REE мое приложение Rails использует в 13 раз больше памяти, чем Apache, о чем сообщает passenger-memory-stats .

the growth rate of memory usage vs concurrent connections is starkly larger with apache

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...