Подтвердить что ты не робот

Когда запрашивается дроссельная заслонка DynamoDB?

В ответе на "Как рассчитана и ограничена пропускная способность DynamoDB Amazon DynamoDB?" было высказано предположение, что DynamoDB дросселирует запрос всякий раз, когда вы превышаете подготовленную пропускную способность в секунду. Однако это противоречит моему опыту.

У меня есть таблица, где я размещаю несколько строк, часто количество строк, превышающее предусмотренную емкость записи. Это происходит в коротких очередях. В какой-то момент у меня даже было 5 минут в среднем выше резервных мощностей. OTOH, среднее значение 15 минут ниже емкости. В тот период у меня не было никакого задушенного запроса.

Средние пики на 5 минут на уровне 8,053 с установленной мощностью 6: 5 minutes average

Средние пики на 15 минут значительно ниже резервной мощности:

enter image description here

Итак, когда запрашивает дросселирование DynamoDB? Какое среднее значение оно учитывает? Как высоко выше подготовленной емкости может произойти взрыв до того, как он заглохнет?

4b9b3361

Ответ 1

DynamoDB предназначен для обеспечения того, чтобы ваши резервные мощности были доступны на каждую секунду. Если вы предоставите таблицу для десяти 1kB чтений в секунду, тогда DynamoDB предоставит вам достаточную емкость для обработки этой пропускной способности. Кроме того, DynamoDB иногда позволяет вам добиться ограниченного разрыва над вашей обеспеченной пропускной способностью в течение короткого периода времени. Это предназначено для поглощения естественных изменений в рабочих нагрузках клиентов. Этот разрыв не гарантируется, и он не всегда доступен (и характер доступного разрыва может меняться со временем). Как описано в документации по лучшим практикам, чтобы получить максимальную производительность, вы должны иметь равномерно распределенную рабочую нагрузку, которая не превышает вашу выделенную емкость и равномерно распределяет нагрузку по ключевому пространству. Однако, если реальность производственного поведения для вашего приложения отличается от равномерно распределенной рабочей нагрузки, тогда DynamoDB может поглощать некоторые из пакетов.

Что касается обеспечения вашей таблицы, это зависит от вашей рабочей нагрузки. Вы можете начать с подготовки к чему-то вроде 80% ваших пиков, а затем настроить свою емкость таблицы в зависимости от того, сколько дросселей вы получаете (что вы можете видеть на графиках CloudWatch) и допуск приложений к задержкам, вызванным попытками. Имейте в виду, что DynamoDB не разрешает неограниченные всплески выше вашей резервной емкости. Возможно, вы сможете поглощать короткие всплески, но вы не можете выдержать пропускную способность выше уровня вашей резервной мощности в течение длительного периода времени. Общее руководство, которое мы можем дать, - это обеспечить что-то близкое к вашим пикам, а затем набрать вниз, наблюдая за дросселями.

Этот ответ был отправлен на форумах AWS

Отказ от ответственности: я работаю в команде Amazon, DynamoDB.

Ответ 2

Там подсказка в документации DynamoDB, в которой объясняется, как работает разрыв:

Когда вы не полностью используете пропускную способность раздела, DynamoDB сохраняет часть вашей неиспользуемой емкости для более поздних всплесков пропускной способности. DynamoDB в настоящее время сохраняет за пять минут (300 секунд) неиспользуемые возможности чтения и записи.

Но он также говорит, что вы не можете полагаться на это поведение:

Однако не создавайте приложение так, чтобы оно зависело от доступности пакета: DynamoDB может и может использовать пакетную емкость для поддержки фона и других задач без предварительного уведомления.

По крайней мере, это объяснило бы, почему можно было получить 5-минутное среднее значение выше предоставленной мощности. С приведенным выше объяснением было бы возможно иметь 15-минутные средние (или более длинные интервалы времени), чтобы быть выше установленной мощности, если у вас есть всплеск в самом начале интервала и меньше использования в течение 300 секунд до начала интервал.