Утечка памяти в Django с Gunicorn и max-запросами уже установлена

#django #kubernetes #memory-leaks #gunicorn #prometheus

#django #kubernetes #утечки памяти #gunicorn #prometheus

Вопрос:

У меня есть приложение Django, которое интегрировано с Gunicorn, Prometheus и Kubernetes. Это приложение, которое запрашивает ElasticSearch.

моя конфигурация Gunicorn:

 exec gunicorn wsgi:application 
    --worker-class gthread 
    --bind 0.0.0.0:15236 
    --workers 40 
    --threads 4 
    --log-level=info 
    --log-file=- 
    --timeout 20 
    --reload
  

Моя проблема

Объем памяти постепенно увеличивается. И когда я добавляю --max-requests 500 конфигурацию для Gunicorn, моя память все еще увеличивается, и мой модуль становится удаленным! Я также удалил все URL-адреса, за исключением url('', include('django_prometheus.urls')) , чтобы убедиться, что утечка памяти не вызвана моим кодом. Я также проверил каталог Prometheus, и он составлял всего 1 МБ, поэтому он не вызван Prometheus. и для DEBUG установлено значение False.

Вопросы

Что может вызвать утечку памяти?

И почему это max-requests вообще не помогает, а только ухудшает?

Версии

Django ==3.1.1

gunicorn ==20.0.4

django-prometheus == 2.1.0

Комментарии:

1. Как вы проверяете использование памяти? Как быстро память потребляется службой django?

2. Я проверяю это с помощью графиков htop и prometheus. в процессе разработки он вырос с 144 МБ до 173 МБ за 4 часа с установленными максимальными запросами. в процессе производства он увеличился с 1,7 Гб до 3,3 Гб за 3 дня без max-requests. @DmitryBelaventsev

3. @Ava ты разобрался? У меня такая же проблема с gunicorn fastapi. Увеличение памяти в состоянии покоя.

4. @Kira К сожалению, нет