trinchet
trinchet

Reputation: 6933

Django memory leak: possible causes?

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?

Upvotes: 26

Views: 22160

Answers (2)

trinchet
trinchet

Reputation: 6933

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 and Finding and fixing memory leaks in Python

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

Update

pyuwsgimemhog is a new tool that helps to find out where the leak is.

Upvotes: 36

Brian
Brian

Reputation: 91

Django doesn't have known memory leak issues.

I had a similar memory issue. I found that there is a slow SQL causing a high DB CPU percentage. The memory issue is fixed after I fixed the slow SQL.

Upvotes: 3

Related Questions