Масштабируемость веб-приложения с помощью 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 в первую очередь влияют несколько плохих страниц, а не общая медлительность приложения.

Другие вопросы по тегам