AWS - Оценка IOPS из MySQL запросов (Laravel, Eloquent) - PullRequest
0 голосов
/ 07 февраля 2020

У меня проблемы с тем, что мой экземпляр RDS максимизирует свои IOPS, когда мы участвуем в длительных отчетных операциях. В настоящее время я выполняю только один сценарий, по одному за раз, и меня удивляет, что я выполняю 3000 IOPS в течение длительного периода времени (часов) и получаю пакетные данные до 7000 IOPS!

Насколько я Понимаете, операция ввода / вывода для экземпляра RDS - это запрос на чтение или запись?

Я проверил свой скрипт локально с помощью панели отладки Laravel, и он содержит 446 запросов для 1-го запуска, а затем 204 Запросы для всех последующих запусков.

enter image description here

У меня он работает в очереди только с одним работником (т. Е. Одновременность 1) и проверяет мои журналы и в течение 10 минут мы можем запустить 282 из этих заданий.

По моим расчетам, это 408 + (204 x 281) = 57 732 запросов за 10 минут, 5 773 в минуту или 96 в секунду.

Чего мне не хватает здесь, чтобы учесть 3000 - 7000 операций ввода-вывода в секунду, зарегистрированных с помощью AWS мониторинга?

enter image description here

EDIT ОК, поэтому я вижу, что один запрос на самом деле не является один IOP.

Таблица, в которую я вставляю, содержит 7 столбцов, исключая создание / обновление, и имеет 4 индекса. Из того, что я прочитал, индексы имеют по крайней мере 1 IOP каждый, и будет несколько других действующих IOP. Даже если бы я сказал 10 IOP на транзакцию, это все равно будет составлять примерно 960 IOPS - намного меньше, чем говорит мне мониторинг RDS.

Есть ли что-то еще, что я могу проверить или оптимизировать, чтобы попытаться уменьшить это. Я действительно не хочу переключаться на подготовленный экземпляр IOPS.

...