Are you using MySQL? It's been implicated in these sorts of issues before: http://nedbatchelder.com/blog/200809/a_server_memory_leak.html
--Ned. http://nedbatchelder.com 7timesTom wrote: > Some time ago Webfaction notified me "Memory usage over your > limit" (80MB) It's taken me ages to find this darn memory leak! It was > one short line that didn't even add functionality to my users. > > I have 2000 items (cars) in a database table, which my users can > search through. After the webfaction memory warning, I optimised the > code so that my pagination was in place so that in theory only 10 > items were loaded into memory per page view. But still my memory usage > was massive. > > Anyway today I notice the line: > msg =cgi.escape(str(len(cars)))+'<br>\n' # which stores a debugging > message for me > > That line was between these two lines (spread out by other stuff and > comments): > cars = Car.objects.filter(...) #upto 2000 items > msg =... len(cars) # can you see the massive memory use here? > paginator = Paginator(cars, per_page=10) > > As you all know Django has been well designed to be lazy at executing > database queries, this is how the Paginator can take a queryset > representing all 2000 items, and return just 10 having loaded only > those 10 into memory. > > So what's wrong with len(cars)? Well, it forces the db query to be > executed in full (before the Paginator line) and loaded into memory. > This caused massive memory use and made me go over my limit. > > If I'd wanted the total number of cars, or number of results, I > should've done Car.objects.filter(...).count() which actually executes > a SELECT COUNT(*) which returns a single number, rather than, in > essence, a huge list. > > Maybe this post will help someone else also one thing I don't > understand: > > Why wasn't the memory returned to me after each page view? Why was an > apache off/on necessary to clear memory? And is there anything I can > do to help clear memory that been used, but not returned to the system? > > > > -- Ned Batchelder, http://nedbatchelder.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---

