Назад | Перейти на главную страницу

Первые шаги по масштабированию серверов для приложения Ruby on Rails

Я запускаю веб-приложение RoR на двухъядерном сервере AMD Athlon 4450e с 8 ГБ оперативной памяти и Ubuntu.

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

У меня есть Apache с Passenger и MySQL, работающие на хосте.

Производительность по-прежнему довольно стабильна, но я вижу, что средняя загрузка начинает постепенно подниматься выше 1 во время более высоких периодов загрузки, а загрузка ЦП приближается к отметке 40 или 50%.

Я могу позволить себе дополнительный компьютер, и четырехъядерная система с 8 ГБ оперативной памяти соответствует моему бюджету.

Должен ли я превратить текущий блок в сервер базы данных и поставить перед ним четырехъядерный процессор в качестве веб-сервера?

Было бы лучше, если бы четырехъядерный процессор работал и как сервер базы данных, и как веб-сервер, а существующее двухъядерное ядро ​​работало рядом с ним как еще один веб-сервер?

Любые другие схемы серверов, которые мне следует рассмотреть?

Вот снимок сервера под нагрузкой:

загрузка сервера http://img.skitch.com/20100208-jhk11btcb43yg4mhd75ecinqqr.png

Спасибо,

-Тим

Не сломано, не чини.

В качестве общего совета по следующим шагам вы можете / должны разделить свои статические файлы на nginx или cdn, а затем потратить некоторое время на анализ ваших запросов mysql, чтобы увидеть, где могут помочь индексы или небольшие настройки.

С двухъядерной машиной, работающей по рельсам, вы довольно легко сможете выдержать среднюю нагрузку 2–3 без какого-либо воздействия на пользователя.

Я бы настроил все на новом компьютере, так как обновление довольно значительное, и использовал бы старый как тестовый сервер.

Если вы перерастете и новый, вы можете настроить приложение RoR на старом сервере и использовать nginx для балансировки нагрузки. Репликация Mysql также может быть вариантом, по крайней мере, для значения резервной копии.

Сначала вам нужно выяснить, что вызывает загрузку процессора - db или приложение apache / RoR.

Я бы посоветовал вам поставить четырехъядерный компьютер как сервер базы данных, а двухъядерный оставить как веб-сервер. Если вы видите больше проблем с веб-сервером, вы всегда можете добавить еще один с балансировкой нагрузки.

Но опять же, сначала осмотрите и посмотрите, какова текущая нагрузка.