У нас есть система, которая состоит из REST-приложения, построенного на Django. База данных, которую мы используем, MYSQL. Оба сервера находятся в AWS.
- В настоящее время к нашему приложению приходят сотни запросов POST.
- При каждом обращении мы выгружаем тело запроса в нашу базу данных.
- Частота запросов огромна ( около 100 в минуту).
Наша следующая задача - обработать данные, которые мы получаем. В настоящее время у нас запланировано задание, которое выполняется каждые 1 минуту.
Это задание имеет логи c для извлечения данных из таблиц, которые еще не обработаны и на основе наших логи c оно обновляет другие таблицы в база данных. Одновременно выполняется большое количество запросов, которые выполняются. В часы пик, когда поступает слишком много данных, запросы блокируются, и наша система перегружается. Иногда нам приходится убивать запросы, чтобы освободить систему.
Каким образом мы можем сократить время обработки запросов, а также обеспечить выполнение всех запросов за меньшее время? Как мы можем гарантировать, что запросы не будут заблокированы?