Рекомендации (и Различия) между различными Производственными веб-серверами Ruby on Rails

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

16
задан John Topley 13 November 2009 в 14:27
поделиться

4 ответа

Краткий ответ

Перейти с Apache / Nginx + Passenger. Passenger - быстрый , надежный, простой в настройке и развертывании. Passenger был принят в большом количестве крупных приложений Rails, включая Shopify .

alt text
(источник: modrails.com )

Подробный ответ

Забудьте о CGI и FastCGI. Вначале не было других альтернатив, поэтому единственным способом запустить Rails было использование CGI или более быстрого браузера FastCGI. В настоящее время почти никто не запускает Rails под CGI. Последние версии Rails больше не предоставляют исполнителей .cgi и .fcgi.

Mongrel был широко распространенным решением, лучшей заменой CGI и FCGI. Многие сайты по-прежнему используют кластеры Mongrel и Mongrel, Кроме того, архитектуру на основе Mongrel довольно сложно настроить, потому что для нее требуется внешний прокси (тонкий, ngnix) и внутренняя архитектура, состоящая из нескольких экземпляров Mongrel.

Passenger привлекает всеобщее внимание с момента его выпуска. Многие проекты перешли с Mongrel на Passenger по многим причинам, включая (но не ограничиваясь) простоту развертывания, ремонтопригодность и производительность. Кроме того, теперь Passenger доступен как для Apache, так и для Ngnix.

Самый простой способ использовать Passenger - это конфигурация Apache + Passenger. Одна установка Apache и несколько процессов Passenger.

Если вам нужна лучшая производительность и масштабируемость, вы можете использовать Ngnix в качестве внешнего прокси и перенаправлять все запросы Rails на несколько внутренних серверов, каждый из которых состоит из Apache + Passenger. Я не буду вдаваться в технические детали, это решение предназначено для использования в проектах Rails с высоким уровнем трафика.

Еще более сложные решения включают комбинацию различных уровней, включая http-прокси и серверы. Вы можете понять, о чем я говорю, прочитав некоторые внутренние детали из GitHub и Heroku .

На данный момент Passenger - лучший ответ для большинства проектов Rails.

35
ответ дан 30 November 2019 в 15:56
поделиться

Mongrel и Thin - это отдельные серверы процессов Ruby, которые можно запускать несколько в качестве кластера за прокси-сервером какого-либо типа (например, Apache или Nginx). Прокси-сервер будет управлять тем, какой экземпляр Mongrel или Thin обслуживает запросы.

Passenger создает интерфейс между Apache или Nginx, который создает процесс создания приложения, а затем разветвляет процессы для обработки входящих запросов по мере их поступления. Их много. параметров конфигурации, определяющих, как долго эти процессы живут, сколько их может быть и сколько запросов они будут обслуживать, прежде чем прекратят работу. Это, безусловно, наиболее распространенный способ масштабирования и обработки приложения с высоким трафиком, но он не лишен недостатков. Это можно сделать только в операционной системе * nix (Linux, Mac OS X и т. Д.). Кроме того, эти процессы запускаются по запросу, поэтому, если никто не обращается к вашему сайту в течение некоторого времени, они умирают, и следующий запрос имеет задержку, когда он снова запускается. С Mongrel и Thin процесс всегда запущен. Иногда, однако, то, что ваши новые и свежие процессы могут быть полезны для использования памяти и т. Д.

Если это будет сайт с относительно низким трафиком, Mongrel или Thin предоставляют простой и легкий в управлении способ развертывания приложения. Для сайтов с высоким трафиком, где вам нужна интеллектуальная организация очередей и управление процессами, как у Passenger, это очень хорошее решение.

Что касается fastcgi, вы, вероятно, захотите использовать его в качестве последнего варианта.

Ваши новые и свежие процессы могут быть полезны для использования памяти и т. д.

Если это будет сайт с относительно низким трафиком, Mongrel или Thin предоставляет простой и легкий в управлении способ развертывания приложения. Для сайтов с высоким трафиком, где вам нужна интеллектуальная организация очередей и управление процессами, как у Passenger, это очень хорошее решение.

Что касается fastcgi, вы, вероятно, захотите использовать его в качестве последнего варианта.

Ваши новые и свежие процессы могут быть полезны для использования памяти и т. д.

Если это будет сайт с относительно низким трафиком, Mongrel или Thin предоставляет простой и легкий в управлении способ развертывания приложения. Для сайтов с высоким трафиком, где вам нужна интеллектуальная организация очередей и управление процессами, как у Passenger, это очень хорошее решение.

Что касается fastcgi, вы, вероятно, захотите использовать его в качестве последнего варианта.

9
ответ дан 30 November 2019 в 15:56
поделиться

Я использую Passenger + nginx. Это действительно очень хорошо работает.

1
ответ дан 30 November 2019 в 15:56
поделиться

Чтобы мгновенно похвастаться производительностью с пассажиром, я рекомендую использовать ruby ​​Enterprise Edition.

1
ответ дан 30 November 2019 в 15:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: