Если вам нужно минимальное количество памяти, вы должны попробовать Thin.У него нет главного работника, как Единорога или Пассажира, поэтому он использует меньше памяти.Предположим, у вас есть очень маленькое приложение, которое должно работать на маленькой виртуальной машине, тогда вы можете использовать 1 thin worker + nginx.Я запустил несколько приложений rails 3.2, используя Thin + nginx + postgres на виртуальных машинах 256 МБ без замены.
Unicorn работает быстрее, но ему нужен мастер.Хорошо, если вы хотите работать на Heroku, вы можете установить 2 или 3 рабочих и быть в пределах 512 МБ.
Если ваше приложение очень большое и у вас слишком много длинных запросов, я бы проверил jRuby и Thinidad / Torquebox.
Я конвертировал несколько приложений из MRI + Sidekiq в jruby + Тринидад + Тринидад_Шедулер.Я получаю около 100-200 запросов в секунду, используя пул из 50 потоков на сервере Тринидад!
Что мне нравится в jRuby, так это то, что вы можете комбинировать все на одном Rails Server.Вы можете собрать в одной и той же JavaVM cache_store с EHcache, Scheduling, фоновой обработкой и реальной многопоточностью.
Вам не нужно запускать redis, memcached, resque или sidekiq по отдельности.
Я не говорю, что они не хороши, я люблю sidekiq и resque, но вы можете уменьшить свою сложность, комбинируя все в одном процессе и имея высокий параллелизм.
Более продвинутое и корпоративное решениеTorquebox, он поддерживает кластеризацию и является супер масштабируемым.Но у меня были проблемы с тем, что мое приложение зависало на Torquebox, поэтому я сейчас придерживаюсь Тринидада.
Недостатки jRuby?Объем памяти!Сервер Тринидад будет использовать минимум 512 МБ, до 2-3 ГБ оперативной памяти.Кроме того, для сервера с одним потоком один запрос от приложения rails, работающего на Ruby-1.9.3, примерно в два раза быстрее, чем тот же запрос на jRuby.
Другой вариант - это Puma, вы можете получить полную многопоточность на МРТ с помощью Puma.Я сам не смог добиться достаточной стабильности в своих приложениях.
Итак, все зависит от ваших требований, использования памяти, полной многопоточности и параллелизма.
Помимо пассажиров, взгляните на Единорога, Тринидада, Пуму и Torquebox.Похоже, сейчас это лучшие серверы рельсов.
Существует замечательная книга с введением преобразования вашего Rails-приложения в jRuby и развертывания вашего приложения с использованием нескольких методов, таких как trinidad.http://pragprog.com/book/jkdepj/deploying-with-jruby
Документация Torquebox удивительно хороша.Это очень подробно и очень хорошо объясняет, как использовать все функции Torquebox.http://torquebox.org/documentation/
Надеюсь, что обмен опытом помог.