В ruby, если множественный HTTP-запрос приходит для одного действия / метода, то как ruby ​​обрабатывает каждый запрос? - PullRequest
1 голос
/ 03 марта 2010

В ruby, если множественный HTTP-запрос приходит для одного действия / метода, то как ruby ​​обрабатывает каждый запрос?

Я точно не знаю, я слышал, что в Java используется многопоточная концепция. Рубин использует то же самое или что-то еще? Если он использует для создания процесса для каждого запроса, то это процесс процессора.

Ответы [ 5 ]

1 голос
/ 03 марта 2010

Это действительно функция веб-сервера, который вы используете, а не язык. Я ожидаю, что он будет использовать некоторую комбинацию процессов и / или потоков внутри процессов для обработки каждого запроса. Посмотрите документацию вашего конкретного веб-сервера для более подробной информации.

0 голосов
/ 06 сентября 2010

Я рекомендую прочитать http://yehudakatz.com/2010/08/14/threads-in-ruby-enough-already/,, это объясняет большинство из них.

0 голосов
/ 06 сентября 2010

Ruby сам по себе является однопоточным языком программирования, поэтому он не может принимать несколько запросов одновременно. Но вы можете открыть несколько процессов на вашем сервере для обработки нескольких запросов. Когда вы хотите узнать, как он работает, нам нужно рассчитать пропускную способность сервера. Когда у вас очень большое количество запросов, люди обращаются к таким технологиям облачных вычислений, как amazon.

0 голосов
/ 03 марта 2010

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

Некоторое время назад люди использовали Mongrel Cluster для множества процессов Rails, поэтому каждый из них мог обрабатывать по одному запросу за раз. Теперь я думаю, что наиболее популярным является Passenger - он может динамически запускать больше процессов Rails, если это необходимо.

0 голосов
/ 03 марта 2010

Есть только один процесс, чтобы ответить на этот запрос. Вот почему у вас есть прокси-система впереди, как 1 Nginx и 2 тонких процесса позади. Один запрос обрабатывается thin и возвращает этот результат.

После того, как появятся такие системы, как EventMachine, для улучшения использования процессора. Например, если вы обрабатываете ожидание некоторого ввода-вывода, EventMachine обрабатывает другой поток ruby ​​во время ожидания.

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