Ответ сильно зависит от:
- Модули веб-сервера, которые вы включили
- Реализация 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 .