t2.micro EC2 Ubuntu, t2.micro RDS MySQL. Сбои сервера после того, как БД достигает ~60 соединений
Итак, у меня есть следующие настройки:
Сервер - t2.micro ECU Ubuntu. База данных - t2.micro RDS MySQL instance.
Стек является базовым стеком LAMP с настройками Apache по умолчанию.
Я в основном бегу веб-сканер. Я настроил некоторые методы для запуска на сервере на основе cronjob. Я заметил, что через несколько минут соединения с БД постепенно увеличиваются до ~60, что, я думаю, может быть слишком большим. После 60, когда я бегу: показать список процессов;
Я получаю все соединения команды "Sleep", и экземпляр EC2 не отвечает. Я не могу подключиться к нему по ssh, и он практически не отвечает, пока я не остановлю / не запусту экземпляр, который изменит IP-адрес и вызовет около 45 минут технического обслуживания, прежде чем он снова заработает.
Я знаю, что это, вероятно, связано с максимальным количеством соединений, но я не понимаю, почему происходит сбой экземпляра EC2...? Я наблюдаю за всем, что происходит на инструментальных панелях EC2 и RDS, и ничто, кроме "подключений к БД", не превышает предела, EC2, похоже, не заботится, его нагрузка составляет всего 5%.
Приложение не регистрирует какую-либо информацию, работают только access.log и errors.log, и они не кажутся заполненными, есть что-то, чего я не учел?
1 ответ
Я подозреваю, что у вас слишком высокая нагрузка для экземпляра типа 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 или полностью выберет что-то вне класса, если вам требуется стабильная производительность.