Масштабируемость веб-приложения с помощью nginx и двух физических серверов linux
Мое веб-приложение ruby on rails получает все большую пропускную способность. С New Relic я получил оценку Apdex < 0,7
Мое приложение работает на моем сервере Debian (например, ip pulic - 123.235.23.16) с Nginx и THIN. Коды и базы данных mysql все на этом сервере.
Мое приложение имеет 3 экземпляра приложения, которые созданы THIN (0.0.0.0:3000, 0.0.0.0:3001, 0.0.0.0:3002). И в конфигурации Nginx http я использую методы балансировки нагрузки:
upstream myapp1 {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
...
location / {
proxy_pass http://myapp1;
}
...
}
Я хочу знать, добавлю ли я другой сервер Debian (например, ip pulic - 123.235.23.17), чтобы помочь первому серверу обрабатывать пропускную способность. Какой сервер должен быть настроен как сервер балансировки нагрузки nginx? Как работать с базой данных MySQL на двух разных серверах и разных экземплярах приложения? MySQL удаленного?
1 ответ
Добавление большего количества физических серверов или хостов повлияет на ваш счет Apdex только в том случае, если время отклика обусловлено главным образом временем очереди, что происходит, но относительно редко в рабочих нагрузках Rails.
Самое распространенное место, где приложения Rails проводят время, - это ввод-вывод с базой данных. Проверьте количество запросов для N+1 взрывов, проверьте медленные журналы запросов либо в NewRelic, либо в самой вашей БД, чтобы увидеть, может ли помочь добавление индексов. Изучите использование некоторого кэширования, если снижение производительности ограничено небольшим количеством страниц.
Также очень часто медленная домашняя страница, но с другими страницами все в порядке. Убедитесь, что на ваш счет Apdex в первую очередь влияют несколько плохих страниц, а не общая медлительность приложения.