Запуск нескольких серверов rails для одного приложения - PullRequest
1 голос
/ 10 марта 2012

Мне было интересно, что Heroku может запускать несколько динамометров для обработки растущего числа запросов.Эта масштабируемость является одним из важнейших ценностных предложений.

Возможно ли нечто подобное локально?По сути, я занимаюсь разработкой приложения, и оно выполняет много запросов и вычислений, которые я тестирую.В настоящее время большая часть вычислений выполняется сервером rails, поэтому запрос на загрузку страницы с отсортированным материалом может занять минуту или более.В конце концов я собираюсь перенести эти вычисления в фоновый режим с помощью delayed_job, но я все еще разрабатываю свой алгоритм, поэтому я пока не пытаюсь внести это изменение.

ТАК что мне интересно, могу ли я запустить несколькорельсы серверов, чтобы на одном я мог кликать по сайту, а на другом запускать эти расчеты?Я попытался открыть два на разных портах, но они не работают одновременно (почти не работает).

Любой совет с благодарностью!

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Мой совет - начать использовать метод фоновой работы прямо сейчас. Все, что вы будете делать, это запускать один и тот же код ... в фоновом режиме. Вы должны быть в состоянии сделать это за 5 минут. Прямо сейчас вы, вероятно, тратите много времени на другие решения, которые можно потратить на код. Как только вы начнете использовать delayedJob, bachgrouddrb или другой вариант, вы не будете оглядываться назад.
Здесь есть хороший пост, который может вам помочь:
http://www.tobinharris.com/past/2009/3/9/6-ways-to-run-background-jobs-in-rubyonrails/, а также
Ruby on Rails: как запускать вещи в фоновом режиме?

0 голосов
/ 10 марта 2012

Я бы повторил другим, которые сказали, что было бы хорошо в конечном итоге разделить ваши расчеты на работников. Я бы порекомендовал смотреть на Resque как альтернативу delayed_job. Мы используем Resque в сочетании с RedisToGo в разработке, а также со всеми нашими производственными приложениями на основе Heroku. Мы в Euclid Inc. большие поклонники Heroku и Redis.

В то же время, вы можете получить поведение, похожее на динамо, в процессе разработки с Unicorn и Foreman Мы снова используем Unicorn в производстве, чтобы сделать наши приложения на базе Heroku еще более эффективными.

Unicorn прост в настройке. Просто установите добавить соответствующие гемы и создайте Procfile, и вы получите несколько процессов без изменений кода.

0 голосов
/ 10 марта 2012

Да, вы можете сделать это, например, с помощью:

$ for port in `seq 3000 3005`; do run server --on-port $port; done

Тогда у вас будет 5 серверов на порту от 3000 до 3005. А затем используйте некоторый обратный прокси-сервер, чтобы перехватить все запросы на одном порту и затем отправитьих на серверы.

Вы также можете попробовать foreman сделать это, но IMHO, если вам нужно сделать это для тестирования, значит, что-то не так в дизайне приложения, а не на сервере.Возможно, вам следует перенести некоторые задачи, например, на EventMachine и запустить их во внешнем процессе (например, создать несколько документов или проанализировать данные).

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