Как сбалансировать нагрузку в приложении Apache + Mongrel
Мне было интересно, если кто-то может объяснить, как может быть сбалансировано применение рельсов.
Два вопроса:
Помогает ли чтение отдельных приложений rails из одной базы данных на одном и том же выделенном сервере?
Я понимаю, что Apache может сбалансировать нагрузку при установке дополнительных модулей? я прав? Как мы можем это сделать? (пожалуйста, предоставьте объяснения для чайников)
1 ответ
Я хотел бы взглянуть на использование 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