Каково текущее положение дел на поточной обработке, параллелизме и разветвленных процессах, в Ruby on Rails?

Intent i =  new Intent(subjname.this, sublist.class);
7
задан John Topley 24 September 2008 в 19:37
поделиться

5 ответов

Направляющие в настоящее время не обрабатывают параллельные запросы в рамках единственной МРТ (Matz Ruby Interpreter) процесс Ruby. Каждый запрос essentally перенесен с гигантским взаимным исключением. Большая работа вошла в создание предстоящих направляющих 2,2 ориентированных на многопотоковое исполнение, но Вы не собираетесь извлекать большую пользу от этого при выполнении под Ruby 1.8x. Я не могу прокомментировать, будет ли Ruby 1.9 отличаться, потому что я не очень знаком с ним, но вероятно не я думал бы.

Одна область, которая действительно выглядит очень перспективной в этом отношении, выполняет направляющие с помощью JRuby, потому что JVM обычно подтверждается как обладание способностью к многопоточности. Arun Gupta от Sun Microsystems дал некоторую интересную производительность, рассчитывает на эту установку в RailsConf Европа недавно.

4
ответ дан 6 December 2019 в 19:44
поделиться

Neverblock допускает не блокирующуюся функциональность, не изменяя способ, которым Вы пишете программы. Это действительно - возбуждение, выглядящее проектом, и было бэкпортировано для работы над Ruby 1.8.x (это полагается на Ruby 1.9's волокна). Это работает и с PostgreSQL и с MySQL для выполнения неблокирующихся запросов. Сравнительные тесты являются сумасшедшими...

3
ответ дан 6 December 2019 в 19:44
поделиться

Ruby 1.8 Matz использует зеленые потоки, и Ruby 1.9 Matz будет использовать собственные потоки O/S. Другие реализации Ruby 1.8, такие как JRuby и IronRuby, используют собственные потоки O/S. YARV, короткий для еще одного Ruby VM, также использует собственные потоки O/S, но имеет глобальную блокировку интерпретатора, чтобы гарантировать, что только один поток Ruby выполняется в любой момент времени.

3
ответ дан 6 December 2019 в 19:44
поделиться

Ruby 1.9 добавляет легкие Волокна:

http://www.infoq.com/news/2007/08/ruby-1-9-fibers

1
ответ дан 6 December 2019 в 19:44
поделиться

Если то, что Вы выполняете в оболочке, не необходимо для рендеринга страницы (например, Вы только инициировали задачи обслуживания или что-то), необходимо запустить их как фоновые процессы. Проверьте скворца и workling.

Если это не относится к Вашей ситуации, необходимо будет удостовериться несколько экземпляров выполненных серверов приложений. Традиционно люди запустили бы несколько экземпляров Полукровки. Но теперь я сказал бы, что самым легким способом иметь серьезную установку является далеким использованием Пассажир Phusion. Это - модуль Apache, который позволяет Вам легко указать, сколько экземпляров (минута и макс.) Ваших серверов приложений Вы хотите иметь выполнение. Пассажир делает остальных. И если я вспоминаю правильно, это не делает глупого циклического алгоритма для диспетчеризации запросов. Я думаю, что это доступностью.

2
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

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