Я использую AWS i3.2xlarge
Экземпляр EC2 и его ограничение составляет 10 000 операций ввода-вывода в секунду. Интересно, почему это так?
Я пишу только в хранилище экземпляров NVMe. Что бы я ни делал, я не могу преодолеть этот предел. я думал что I3 класс экземпляр мог бы пойти намного выше этого?
Что-то мне не хватает? Нужен ли мне более крупный экземпляр для достижения более высоких показателей IOPS? Прежде чем я попытаюсь подняться выше, я хотел бы понять, является ли это типичным пределом для этого экземпляра или это что-то в моей настройке?
Удалось ли кому-нибудь достичь более высокой пропускной способности с таким типом инстансов? Почему ограничение 10K IOPS? В чем причина этого? А как подняться выше?
Примечание. Я запускаю приложение базы данных и делаю для него много запросов на обновление.
Ты 100% уверен вы пишете в локальное хранилище SSD?
Похоже, вы случайно оказались вместо этого используйте том EBS, ограничение 10K IOPS предполагает, что ...
Как проверить: В Amazon Linux 2 на i3.2xlarge
хранилище экземпляра NVMe /dev/nvme0n1
в то время как тома EBS /dev/xvd*
. Проверьте, какое устройство смонтировано в используемом вами каталоге / benchmarking:
[root@ip-172-31-41-210 ~]# mount
/dev/xvda1 on / type xfs (rw,noatime,attr2,inode64,noquota)
/dev/xvdba1 on /ebs-storage type ext4 (rw,relatime,data=ordered)
/dev/nvme0n1 on /local-storage type ext4 (rw,relatime,data=ordered)
Здесь у меня есть второй том EBS, смонтированный как /ebs-storage
и хранилище экземпляра NVMe как /local-storage
.
Обратите внимание, что Диск NVMe должно быть явно форматированный (mkfs
) и установленный прежде чем его можно будет использовать! По умолчанию экземпляр запускается только с EBS. корневой диск а быстрый диск NVMe не используется!
Надеюсь, это поможет :)
Эта страница на AWS говорит, что i3.2xlarge может выполнять 412 500 операций ввода-вывода в секунду при произвольном чтении и 180 000 операций ввода-вывода в секунду при записи. Для сравнения, i3.16Xlarge может выполнять 3,3 миллиона операций ввода-вывода в секунду при произвольном чтении и 1,4 миллиона операций ввода-вывода в секунду при записи.
Здесь также говорится
По мере заполнения томов хранилища экземпляров на основе SSD для вашего экземпляра количество операций ввода-вывода в секунду при записи, которых вы можете достичь, уменьшается. Это связано с дополнительной работой, которую должен выполнить контроллер SSD, чтобы найти доступное пространство, перезаписать существующие данные и стереть неиспользуемое пространство, чтобы его можно было перезаписать. Этот процесс сборки мусора приводит к внутреннему усилению записи на SSD, что выражается как отношение операций записи SSD к операциям записи пользователя. Это снижение производительности еще больше, если операции записи не кратны 4096 байтам или не выровнены по границе 4096 байтов. Если вы записываете меньшее количество байтов или байтов, которые не выровнены, контроллер SSD должен прочитать окружающие данные и сохранить результат в новом месте. Эта модель приводит к значительному увеличению усиления записи, увеличению задержки и значительному снижению производительности ввода-вывода.
Предложите вам запустить инструмент тестирования, чтобы узнать, сколько операций ввода-вывода в секунду вы можете достичь - извините, я не могу рекомендовать инструмент. После этого, вероятно, придется оптимизировать вашу базу данных для данного экземпляра. Вероятно, где-то в Интернете есть статьи об оптимизации вашего программного обеспечения для экземпляров i3.
В противном случае совет обратиться в службу поддержки AWS будет хорошим советом. Их поддержка отличная. За их поддержку нужно платить, хотя уровень разработчика не так уж и дорог.
В AWS скорость IOPS ограничена. на объем.
Если вам нужна более высокая пропускная способность, лучше использовать большее количество меньших объемов а не один огромный том. Затем вы можете поместить тома, например. в SW-RAID или настройте свое программное обеспечение для использования нескольких хранилищ данных.