Как улучшить производительность AWS RDS - Обновления с интенсивным чтением и записью

После поиска и прочтения стольких сообщений, комментариев и обсуждений я обнаружил, что не нашел ни одного, относящегося к моей проблеме.

У меня несколько Развертывания AWS EC2 с одним RDS все в одной зоне доставки us-west-2 (c)

Я тестирую нагрузку на инстансы на часть той, которую я очень скоро ожидаю. Меня беспокоит производительность при загрузке обновлений. Мы будем часто получать обновления 1, 000 записей за раз, и мы будем брать и сравнивать наши данные и обновлять наши данные по мере необходимости. Следовательно, одно чтение и одна запись для каждой записи. Нередко 100 000 обновлений приходят к нам за час.

В настоящее время у меня есть база данных MySQL на RDS класса AWS t2.medium, на котором запущено 5 процессов обновления при 22% ЦП и менее 1 ГБ памяти.

Даже с такими низкими числами время чтения для поиска в базе данных из 106,3 КБ записей занимает от 2 до 3 полных секунд, а время записи - еще 2 секунды.

Мне нужно кое-что подумать о том, как улучшить это время чтения / записи.

Дополнительная информация: у меня тоже работает экземпляр реплики. Сайты, управляемые CMS (100 и растущие ежедневно), подключаются к экземпляру реплики для получения своего контента.

Спасибо!

4
задан 16 April 2016 в 10:19
3 ответа

Я собираюсь превратить свои комментарии выше в ответ.

Экземпляры T2 получают только долю процессора - 10% для t2.micro, 40% за t2.medium. Вы получаете кредиты ЦП, которые накапливаются, но как только вы их используете, производительность ЦП снижается. Вы также получаете более низкую производительность сети и ввода-вывода, так как вам приходится разделять ресурсы физических машин.

Я подозреваю, что в вашем тестировании закончились кредиты ЦП, поэтому вы ограничены. Вы можете контролировать количество ресурсов ЦП в CloudWatch, это покажет вам, верна ли моя догадка.

Прав ли я или нет, экземпляры t2 не подходят для систем, в которых требуется работа. постоянно. C4 или другой общий экземпляр, вероятно, будет вашим лучшим выбором. Вы можете отслеживать использование памяти базы данных и ЦП в CloudWatch, чтобы определить, какой размер экземпляра базы данных вам нужен.

5
ответ дан 3 December 2019 в 03:05

В итоге я создал c4.xlarge EC2 и заставил его работать как мой сервер MariaDB 10. Из-за большого объема трафика в настоящее время и значительного увеличения, связанного с новыми маркетинговыми кампаниями, я не мог полагаться на RDS, не тратя несколько сотен в месяц. И я обнаружил множество жалоб на AWS RDS с проблемами, аналогичными моей.

Теперь система может поддерживать двух рабочих обновлений одновременно, в то время как посетители могут получать динамический контент без снижения производительности.

Спасибо всем за ваши мысли и комментарии!

  • Стивен
0
ответ дан 3 December 2019 в 03:05

Обратите внимание на узкое место диска: IOPS диска. RDS будет ограничивать запрос ввода-вывода, если он не предоставлен. На SSD выделяется 3iops / ГБ. Таким образом, если у вас есть 100 ГБ, выделенные для SSD, вы можете максимально увеличить блок 3x100 = 300 iops.
Если вы платите за выделенный SSD, вы можете выделить больше iops.

В то время как для стандартного (магического) хранилища дополнительный заряд на миллион iops рассчитывается, а всплеск составляет 40-200 iops.

Пожалуйста, проверьте свои действия в журнале RDS io, чтобы определить лучшую стратегию дискового io. Дополнительная информация: https://stackoverflow.com/questions/18777070/aws-rds-provisioned-iops-really-worth-it

1
ответ дан 3 December 2019 в 03:05

Теги

Похожие вопросы