конфигурация пропускной способности весенней загрузки DynaModb

Наше приложение в производстве часто отключается, потому что оно не выдерживает нагрузки. Теперь API — это API входа в систему, что очень важно. внутри API входа в систему у нас есть 3 вызова rest и 8 вызовов dynamodb (6 вызовов чтения и 2 вызова записи - размер элемента всегда меньше 1 КБ, и мы ищем возможную согласованность). микросервис работает на встроенном tomcat (7), мы используем весеннюю загрузку. как я читал из документации tomcat, по умолчанию у него 200 потоков, и мой 1 запрос занимает около 800 мс. Итак, не могли бы вы помочь мне, какую конфигурацию мне следует установить для DynaModb RCU и WCU? Стоит ли иметь DAX для вызовов чтения и насколько просто его интегрировать с существующим приложением. У нас есть 2 экземпляра, работающих в производстве для микросервисов, по какой-то причине, если мы сможем выяснить, какая конфигурация подходит, мы можем увеличить количество экземпляров, а также насколько увеличить мы должны сделать для RCU и WCU? Пожалуйста, направляйте.


person Rahul Singh    schedule 05.08.2019    source источник
comment
я ищу tps 160   -  person Rahul Singh    schedule 05.08.2019
comment
Почему бы не перейти на оплата за каждый запрос введена на re:Invent 2018?   -  person madhead    schedule 05.08.2019


Ответы (1)


Если для вас важно продолжать использовать подготовленный режим выставления счетов DynamoDB, вам следует настроить его в соответствии с двумя стандартами:

1) Ваш «базовый» RCU/WCU должен соответствовать вашему среднемесячному использованию, вы можете легко увидеть это на информационных панелях, которые предоставляет AWS, проверьте потребление RCU/RCU.

2) Вы также можете настроить автоматическое масштабирование, это должно быть основано как на пиковом использовании, так и на максимальной сумме, которую ваша компания готова ежемесячно тратить на DynamoDB, опять же, это легко извлечь из информационных панелей.

Но если вы можете использовать режим выставления счетов по требованию, как упомянуто @madhead, он автоматически позаботится о скачках за вас, поскольку вы на самом деле ничего не предоставляете.

Однако будьте в курсе! Режим по запросу взимает плату за каждый запрос, это очень дешево, если у вас неравномерное и скачкообразное использование, но если у вас есть постоянный и предсказуемый доступ, он определенно будет дороже, чем режим с предоставлением.

person Mojimi    schedule 05.08.2019
comment
Хорошо... В общем, у меня есть один запрос на бесплатный уровень aws для dynamodb, который они упомянули, например, 25 единиц емкости чтения и 25 единиц емкости записи, что достаточно для обработки до 200 миллионов запросов в месяц, не могли бы вы сообщить мне, как это возможно?? - person Rahul Singh; 10.08.2019
comment
В месяце 2 миллиона секунд, 25 умножить на 64 миллиона. Небольшой запрос занимает 1/4 RCU, что дает 200 миллионов запросов в идеальном сценарии. - person Mojimi; 10.08.2019
comment
Хорошо, понял, спасибо..... не могли бы вы сообщить мне, нужно ли мне проверить, сколько времени занимает запрос, то как я могу проверить, есть ли какие-либо показатели, предоставляемые aws, или мне нужно указать время начала/остановки в слое dao определить это?? - person Rahul Singh; 10.08.2019
comment
Дело не во времени, а в том, сколько RCU стоит ваш запрос, в API есть опция, которая возвращает значение, вам нужно будет проверить, как это сделать в используемом вами SDK, или просто проверить метрики в консоли AWS. вашей таблицы Dynamodb - person Mojimi; 10.08.2019
comment
О, я проверил с помощью калькулятора, предоставленного aws. У меня 1 единица rcu потребляется полностью, то есть 4 КБ для 1 rcu. Я думаю, что 4 КБ слишком много, верно?? Что я хочу знать, так это то, что для x размера элемента строго соответствует, сколько rcu в секунду может поддерживаться, или способ узнать. Потому что таким образом только я могу сократить время, затраченное на полную транзакцию, и все время, затраченное на ресурсы. Я знаю, что через облачные часы я могу узнать, но не на том точном уровне, о котором я спрашиваю. Пожалуйста, знайте, кажется ли это правильным подходом. - person Rahul Singh; 10.08.2019
comment
Более того, если я читаю 4 элемента по 1 КБ в секунду, это будет считаться 1 rcu, верно? - person Rahul Singh; 10.08.2019