Как Rails обрабатывает параллельный запрос на разных серверах?

87
9

Об этом просили раньше, но он никогда не отвечал особенно подробно.


Скажем, у вас есть Rails, работающий на одном из нескольких поддерживаемых им веб-серверов, таких как WEBrick, Mongrel, Apache и Nginx (через Passenger Phusion). Сервер получает два параллельных GET, что происходит? Является ли это документально зафиксированным?


В принципе мне любопытно:


    Каждый раз создается сервер или рельсы?
    Как-то попытаться повторно использовать существующие экземпляры (рубиновые процессы с Rails, уже загруженные в нем?) для обработки запроса?
    Не запускает новый рубиновый процесс и перезагружает Rails в нем довольно медленно?

Спасибо! Любые ссылки на исчерпывающие разъяснения были бы весьма полезны.

спросил(а) 2012-04-28T21:22:00+04:00 8 лет, 3 месяца назад
1
Решение
68

Некоторые используют рабочих (apache, phusion, единорог), некоторые - нет. Если вы не
использовать работников, это действительно зависит от того, где ваше приложение является потокобезопасным
или нет. Если вы, несколько поручений могут подаваться одновременно,
в противном случае Rack::Lock, который блокирует это. Если есть рабочие
(отдельные процессы), каждый из которых выполняет запрос, а затем возвращается к
пул, где мастер присваивает ему новый запрос. Читать
на

ответил(а) 2012-04-28T21:27:00+04:00 8 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема