Как я могу определить, сколько IOP мне нужно для моей базы данных AWS RDS?
14
Я мигрирую часть базы данных mysql в AWS. Данные, о которых идет речь, записываются на 99%, и в каждой строке содержится около 1 тыс. Полей varchar, дата-время и 4 дюйма.
Я предполагаю, что нам потребуется от 20 до 25 тысяч записей в час в часы пик.
Я запустил iostat -h для текущей базы данных, и она выдала около 40 пакетов в секунду.
Как мне определить, какой тип IOPS мне понадобится?
Вы можете выполнить некоторые обратные расчеты конверта, чтобы приблизить число операций ввода-вывода на одну вставку, умножить его на количество транзакций в секунду, добавить некоторую буферную комнату и т. Д., Но гораздо проще просто проверить это.
Самое простое, что нужно сделать, - это выделить лучшую догадку, а затем вернуться и увеличить или уменьшить ее, чтобы она соответствовала результатам тестирования в реальном мире. Это одно из преимуществ использования облачной среды, аппаратные изменения имеют низкую капитальную стоимость, и такие изменения обычно требуют только обновлений конфигурации. С томами EBS вы не можете просто увеличить количество операций ввода-вывода в секунду, вам также придется увеличить размер тома 1 . Вы всегда можете просто создать новый том и скопировать свои данные. Будет некоторое время простоя, но если ваши данные не велики, их не должно быть много, поскольку это будет необработанная копия.
Вот предположение о количестве необходимых операций ввода / вывода. Опять же, это всего лишь предположение, поскольку специфика зависит от количества индексов и от того, будет ли ваш поток трафика гладким или быстрым. При 25 тыс. Ткс / час вы получаете ~ 7 ткс / сек. Размер каждой строки не имеет особого значения, так как он меньше, чем размер одиночного ввода / вывода (4K). Каждая транзакция будет делать где-то между 1-5 IOP (первичная вставка плюс пара вставок дерева индексов), так что скажем ~ 35 / с.
Я говорю, начните с минимального 100 IOPS и увеличьте масштаб в случае необходимости.
Кстати, как продолжение этого: мы создали базу данных объемом 300 ГБ, а это означало минимум 1000 операций ввода-вывода в секунду. После 6 месяцев жизни на RDS было 0 инцидентов из-за проблем ввода-вывода. Вероятно, излишним, но как можно ближе к огню и забыть, как вы можете получить.
Крис
Исходя из вашей нагрузки - вам не нужны подготовленные IOP. Если вам не понадобится более 2500-3500 IOP, стандартное хранилище будет иметь объем 300 ГБ (из-за чередования EBS).
Росс
7
Я использовал базовый инструмент iostat (iostat -h), чтобы понять, сколько iops я сейчас использую. Исходя из этого, я экстраполировал, сколько бы я использовал, если бы я был в 4 раза меньше этого количества нагрузки и пошел с этим количеством. Для меня это сработало до 780 IOPS, поэтому я пошел с 800 IOPS.
iostat -h сообщает о 40 tps, так что это соответствует 40 iops? Это будет соответствовать числам, которые рассчитывает @sehrope.
Крис
1
Правильно.
Марк D
0
Я использую iostat для определения количества операций ввода-вывода в секунду, которые выполняет мое приложение. Iostat сообщает об этом как TPS. КБ / т помогает определить, меньше ли объем передачи, чем размер куска, 256 КиБ. Я запускаю iostat с временем ожидания в одну секунду, т.е. iostat -w 1.
Я использовал базовый инструмент iostat (iostat -h), чтобы понять, сколько iops я сейчас использую. Исходя из этого, я экстраполировал, сколько бы я использовал, если бы я был в 4 раза меньше этого количества нагрузки и пошел с этим количеством. Для меня это сработало до 780 IOPS, поэтому я пошел с 800 IOPS.
источник
Я использую iostat для определения количества операций ввода-вывода в секунду, которые выполняет мое приложение. Iostat сообщает об этом как TPS. КБ / т помогает определить, меньше ли объем передачи, чем размер куска, 256 КиБ. Я запускаю iostat с временем ожидания в одну секунду, т.е. iostat -w 1.
источник
Это может помочь вам контролировать ваши IOPS:
Пакетная метрика теперь доступна для томов Amazon EBS общего назначения (gp2)
источник