Django с API DRF замедляется через несколько недель или месяцев
У меня есть сайт Django с DRF, и на нем есть несколько API на основе DRF с представлением GenericAPI и представлением API. API используется для вычисления различий между XML и XML и JSON и JSON. Два объекта передаются в качестве тела в эти API, и API возвращает количество различий и точные узлы, в которых были найдены различия. Он также отвечает, какие узлы были добавлены или удалены.
Прицел и API отлично работают, когда моя среда только запущена и работает в течение нескольких недель, скажем, 2 недель. Недавно я заметил, что через месяц или 3 недели тем же API требуется гораздо больше времени для расчета различий при том же наборе данных.
Обычно это происходит очень быстро, например, если у нас большой объект JSON, то обрабатывается 1k различий в секунду. Если у нас довольно маленький объект JSON или XML, например 5-10 ключей (очень простой), то основная функция библиотеки, которая вычисляет разницу, обрабатывает всего несколько миллисекунд. Таким образом, общее время работы API составляет около 200 мс.
Now the issue that I have is after lets say 3 weeks or a month same very basic JSON object comparison (with just 5-10 keys) takes 20 seconds to respond. The library function takes almost 20 seconds to calculate just one or two difference.
Я не использую здесь никакого кэширования. Никакие операции с базой данных не задействованы ни в одной из моих библиотечных функций.
Я использую типы данных dict и list в python для хранения вычисленных разностей. Есть идеи, почему это происходит?
Подробности:
- 4VCPU machine with 16 GB ram (AWS t3.xlarge)
- docker compose environment with nginx, gunicorn django