#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 К сожалению, нет