问题
I've a Django application that every so often is getting into memory leak.
I am not using large data that could overload the memory, in fact the application 'eats' memory incrementally (in a week the memory goes from ~ 70 MB to 4GB), that is why I suspect the garbage collector is missing something, I am not sure though. Also, it seems as this increment is not dependant of the number of requests.
Obvious things like DEBUG=True
, leaving open files, etc... no apply here.
I'm using uWSGI 2.0.3
(+ nginx) and Django 1.4.5
I could set up wsgi
so that restart the server when the memory exceeds certain limit, but I wouldn't like to do that since that is not a solution really.
Are there any well know situations where the garbage collector "doesn't do its work properly"? Could it provide some code examples?
Is there any configuration of uWSGI + Django that could cause this?
回答1:
I haven't found the exact stuff I'm looking for (each project is a world!), but following some clues and advices I managed to solve the issue. I share with you a few links that could help if you are facing a similar problem.
django memory leaks, part I, django memory leaks, part II, Finding and fixing memory leaks in Python, Optimized script for nginx and uwsgi on ubuntu 12.04 (this is for WEB2PY but gives some 'crutches' via uWSGI) and Debugging memory leaks in a WSGI application.
Some useful SO answers/questions: Which Python memory profiler is recommended?, Is there any working memory profiler for Python3, Python memory leaks and Python: Memory leak debugging
来源:https://stackoverflow.com/questions/25090573/django-memory-leak-possible-causes