Пропускная способность чтения DynamoDB ниже емкости без какого-либо регулирования

У меня проблема с "Динамо", когда пропускная способность чтения значительно ниже предоставленной емкости без какого-либо видимого регулирования на графиках.

Моя таблица имеет 100 ГБ данных, аналогичных:

| Partition Key | Sort Key | Value | A | A1 | 1 | A | A2 | 21 | A | A3 | 231 ... | A | A200 | 31 | B | B1 | 5

Эта структура не может измениться слишком сильно, так как важно, чтобы я мог запрашивать все значения, связанные с данным ключом (и более сложные запросы, основанные на ключе сортировки, связанном с данным ключом раздела)., Это заставило меня ограничить записи, так как они часто посещают одни и те же разделы, но что действительно странно, так это пропускная способность чтения. В таблице предусмотрено 1000 единиц чтения, но максимальная записанная пропускная способность составляет 600 операций чтения в секунду. Это соответствует до 10 000 выделенных единиц чтения в секунду.

На стороне клиента я отправляю 1000 запросов в секунду (равномерно, используя ограничитель скорости), поэтому теоретически пропускная способность чтения должна составлять 1000 операций чтения в секунду. Даже если количество запросов увеличивается на стороне клиента, скорость остается неизменной, и количество операций чтения с нулевым дросселированием равно нулю.

Клиент работает на экземпляре EC2 m4.2xlarge в том же регионе, что и Dynamo. Я исключил проблему с клиентом, так как загрузка процессора довольно низкая, а памяти достаточно.

Есть мысли о том, что может быть причиной этого?

2 ответа

Несколько мыслей

  1. В вашем тесте вы распространяете свои запросы по всем ключам раздела? Динамо распределяет пропускную способность по всем разделам, так что, если вы работаете с подмножеством разделов, вы можете не достичь своей пропускной способности заголовка.
  2. Вы знаете, сколько данных возвращает каждое чтение? 1 емкость чтения может вернуть до 4 КБ данных. Если бы некоторые из ваших результатов были больше 4 КБ, вы бы получали менее 1000 операций чтения в секунду для 1000 RCU.
  3. Знаете ли вы, сколько разделов у вас на столе и как ваша пропускная способность распределена по ним? В одном разделе может быть только 3000 RCU. Временное увеличение пропускной способности может привести к тому, что ваша таблица создаст новые разделы с распределением пропускной способности каждого из них. Затем, когда вы перезагружаете RCU, данные остаются в том же количестве разделов, где ваши RCU распределяются более тонко.

Количество данных на единицу может повлиять на RCU.

Смотрите: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html

Одна единица емкости чтения представляет одно строго согласованное чтение в секунду или две в конечном итоге согласованные операции чтения в секунду для элемента размером до 4 КБ. Если вам нужно прочитать элемент размером более 4 КБ, DynamoDB потребуется использовать дополнительные единицы емкости чтения. Общее количество требуемых единиц емкости чтения зависит от размера элемента и от того, хотите ли вы в конечном итоге согласованное или строго согласованное чтение.

Вы должны проверить, используете ли вы постоянные чтения и объем данных, которые вы выбираете за чтение.

Другие вопросы по тегам