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

t2.micro EC2 Ubuntu, t2.micro RDS MySQL. Сервер падает после того, как БД достигает ~ 60 соединений

Итак, у меня есть следующая установка:

Сервер - t2.micro ECU Экземпляр Ubuntu База данных - t2.micro RDS MySQL instance.

Стек представляет собой базовый стек LAMP с настройками Apache по умолчанию.

Я в основном использую поисковый робот. Я установил несколько методов для запуска на сервере на основе задания cron. Я заметил, что через несколько минут количество подключений к БД постепенно увеличивается до ~ 60, что, на мой взгляд, может быть слишком много. После 60, когда я запускаю: show processlist;

Я получаю, что все соединения выполняются командой "Sleep", а экземпляр EC2 не отвечает. Я не могу подключиться к нему по ssh, и он практически не отвечает, пока я не остановлю / не запустил экземпляр, который меняет IP-адрес и вызывает около 45 минут обслуживания перед его повторным включением.

Я знаю, что это, вероятно, связано с максимальным количеством подключений, но я не понимаю, почему происходит сбой экземпляра EC2 ...? Я слежу за всем на панелях мониторинга EC2 и RDS, и ничего, кроме «подключений к базе данных», не выходит за рамки лимита, EC2 кажется, что его это даже не волнует, его нагрузка составляет примерно 5%.

Приложение не регистрирует никакой информации, работают только access.log и errors.log, и они не кажутся заполненными. Есть ли что-то, что я не учел?

Я подозреваю, что у вас слишком высокая нагрузка для экземпляра типа t2. Этим экземплярам назначается время ЦП на основе кредитной системы, а t2.micros имеет наименьшую общую производительность ЦП в классе экземпляра. Эти кредиты накапливаются со скоростью 6 в час на t2.micro, что дает вам возможность загружать 100% ядра процессора в течение 6 минут. В остальное время вам предоставляется только 10% ядра. Более того, вы будете накапливать кредиты только в том случае, если ваш экземпляр полностью простаивает.


Я думаю, что вы быстро используете доступные кредиты (как на вашем веб-экземпляре, так и на вашем экземпляре RDS) и пытаетесь использовать слишком мало мощности процессора в остальное время, что приводит к зависанию вашего экземпляра из-за отсутствия Ресурсы.


Если вы хотите проверить мою теорию на выбор, вы можете посмотреть метрики CloudWatch как для вашего экземпляра EC2, так и для своего экземпляра RDS и найти следующее: CPUCreditUsage и CPUCreditUnits. Эти графики покажут, накапливаете ли вы и / или используете ли ваши кредиты.


Для получения дополнительной информации перейдите на эту страницу: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html

Ваше решение, вероятно, увеличит размер одного или обоих ваших экземпляров до чего-то большего в классе экземпляров T2 или полностью выберет что-то за пределами класса, если вам требуется устойчивая производительность.