Как сбалансировать нагрузку в приложении Apache + Mongrel - PullRequest
0 голосов
/ 08 июня 2010

Мне было интересно, может кто-нибудь объяснить, как можно сбалансировать приложение рельсов.

Два вопроса:

  1. Помогает ли чтение отдельных приложений rails из одной базы данных на одном выделенном сервере?

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

1 Ответ

1 голос
/ 08 июня 2010

Я хотел бы взглянуть на использование Passenger - он в значительной степени заменил Mongrel и обрабатывает несколько экземпляров Rails.

Rails является однопоточным, поэтому при развертывании с Mongrel «нормально» запускать несколько экземпляров Mongrel в кластере, запущенном Apache, с установленным mod_proxy. Это позволяет Apache отправлять несколько запросов на бесплатные экземпляры приложений.

Любые разумные базы данных рассчитаны на высокий уровень одновременных запросов, поэтому должны иметь возможность обрабатывать большое количество экземпляров приложения.

В зависимости от ресурсов вашего сервера, есть большое преимущество в запуске нескольких экземпляров Mongrel - на самом деле это единственный способ обслуживать параллельные запросы.

Даже на узле с малой памятью (скажем, 512 МБ), если ваше приложение Rails использует 100 МБ памяти, вы легко сможете запустить несколько экземпляров без исчерпания ресурсов - тогда вы сможете обслуживать столько параллельных запросов, сколько у вас есть экземпляров .

В Sliecehost есть несколько замечательных статей, подобных этой: http://articles.slicehost.com/2009/4/17/centos-apache-rails-and-mongrels

...