#performance #postgresql #amazon-rds
#Производительность #postgresql #amazon-rds
Вопрос:
Я заметил, что в моей PostgreSQL Amazon RDS Read replica произошла странная вещь.
Мы провели «стресс-тест» десятков параллельных высоконагруженных запросов на чтение. Производительность была действительно хорошей в начале теста, но затем быстро снизилась, в то время как сам PostgresSQL продолжал удерживать десятки select
запросов, которые выполнялись быстро, прежде чем они были сложены.
Я открыл вкладку статистики монитора в консоли RDS и увидел, что наряду с видимым снижением производительности количество операций ввода-вывода при чтении также уменьшилось с 3000 / сек до 300 / сек и долгое время не превышало 300 / сек iops. В то же время загрузка процессора была действительно низкой ~ 3%, не было никаких проблем с оперативной памятью или местом для хранения.
Итак, мой вопрос: существуют ли какие-либо документированные ограничения операций ввода-вывода чтения для реплики чтения? Похоже, что Amazon RDS автоматически снизил верхний предел операций ввода-вывода после действительно высокой нагрузки (3000 в секунду).
Сервер чтения-реплики работает на экземпляре db.t2.large с типом хранилища общего назначения (SSD) объемом 100 ГБ с отключенной функцией фиксированного ввода-вывода.
Ответ №1:
Поведение, которое вы описываете, в точности соответствует задокументированному для базового класса хранения GP2.
GP2 разработан для […] обеспечения постоянной базовой производительности в 3 IOPS / GB
Объемы GP2 размером менее 1 ТБ также могут достигать 3000 операций ввода-вывода.
3 IOPS / GB на томе объемом 100 ГБ — это 300 IOPS.
Смотрите также http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html для описания того, как работают кредиты IOPS. Пока ваша система не занята, она будет накапливать кредиты, которые можно использовать для следующего пакета.
Комментарии:
1. Будущие посетители, обратите внимание, что, за исключением Aurora (которая использует совершенно другую архитектуру хранилища), новая реплика чтения RDS будет работать медленнее, пока ее базовый том не будет полностью прогрет, по причинам, не связанным с типом тома. Этот процесс может занять часы или даже дни для очень больших наборов данных, но может даже не быть заметным, в зависимости от размера вашей базы данных и используемых шаблонов доступа.