Что не так с моей конфигурацией APP + DB в DigitalOcean? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть приложение на облачном сервере digitalocean. Я использовал отдельный веб-сервер (приложение) и капли базы данных и изменял размеры приложения по мере необходимости. Возможно, моя конфигурация была ужасной, поэтому мне было трудно, когда число одновременных пользователей достигло более 150. Я использовал капли 2 ГБ для своего сервера базы данных. Даже когда я увеличиваю некоторые параметры в apache и пытаюсь оптимизировать капли базы данных, все еще сложно найти оптимальное решение.

Итак, несколько недель go я переместил свою базу данных (MySQL) из обычной капли в службу управляемых баз данных. Сначала я выбираю самый дешевый, без резервного узла (10 долларов в месяц, 1 ГБ ОЗУ). Я был впечатлен представлением. Даже с сервером приложений 1 ГБ (обычная дроплет, 5 долларов США), он по-прежнему работает очень быстро, хотя число подключенных пользователей составляет почти 200.

А потом несколько дней go, мой пользователь набирает более 500 одновременных .. и затем сбой базы данных ... хотя мое приложение масштабируется по горизонтали до 5 (1 ГБ ОЗУ каждый, через балансировщик нагрузки DO). После того, как я изменил размер узла, здоровье капель увеличилось, поэтому я полагаю, что было правильным решением увеличить узел db (до $ 60 / месяц, 4 ГБ ОЗУ). Обратите внимание, что в этой настройке я могу достичь 150 запросов / с на моем мониторе состояния балансировщика нагрузки.

И вот, сегодня, я вижу балансировщик нагрузки, который получил 50-70 запросов / с, так что все в порядке? НЕТ! Я вижу, что здоровье падает ... и я получил ошибку "слишком много связи". Мое плохое, я не видел максимальное соединение (с запросом) в то время с 1 ГБ ОЗУ ... но сегодня я вижу, что максимальное соединение составляет 226 (со значением максимального используемого соединения 228). Так низко! И я не могу найти какой-либо способ или параметр, чтобы увеличить это число. Поэтому я вынужден увеличить (СНОВА) узел БД до 8 ГБ ... и я снова проверяю запрос, я установил максимальное соединение равным 701 и максимальное использованное соединение (как ни странно) 124, даже когда я перезагружаю запрос. Это не изменилось до сих пор, когда я пишу этот вопрос. К вашему сведению, мое приложение снова работает быстро.

Я использовал запрос:

show variables like 'max_connections';
show status like 'max_used_connections';

Мои вопросы:
1. С кластером БД, установленным на 8 ГБ ОЗУ / 4vCPU / 115 ГБ Disk / Primary + Standby, 701 - это правильный номер? Это слишком низко? Что если я использую те же спецификации с обычным дроплетом для настройки своей базы данных (MySQL), могу ли я установить это число выше этого? Это достижимо?
2. Почему мой второй запрос выше вывода всегда равен 124?

Спасибо за вашу помощь. Привет.

...