I'm Running Zope 2.7.0 and python 2.3.3 on Debian with kernel 2.6.4 I'm experiencing a rather anoying memory leak (?) wich causes the need of a restart of zope once a week or so. something in my zope causes the swap-partition to fill up (1,5 Gig), and eventually zope will stop responding. When I restart zope, Everything is back to normal, and the the swap partition slowly starts growing again. I have a sneaking suspicion that this is caused by some External methods (we are using a lot) So: How may I track memory usage in zope, particulary: How can I find out wich object is "gun on the run". Best regards Einar Næss Jensen -- Einar Næss Jensen Avdelingsingeniør IT-HF 735 90750
On Thu, Jun 10, 2004 at 09:18:22AM +0200, Einar N?ss Jensen wrote:
I'm Running Zope 2.7.0 and python 2.3.3 on Debian with kernel 2.6.4
I'm experiencing a rather anoying memory leak (?) wich causes the need of a restart of zope once a week or so. something in my zope causes the swap-partition to fill up (1,5 Gig), and eventually zope will stop responding. When I restart zope, Everything is back to normal, and the the swap partition slowly starts growing again.
I have a sneaking suspicion that this is caused by some External methods (we are using a lot)
So: How may I track memory usage in zope, particulary: How can I find out wich object is "gun on the run".
google for LeakFinder. I have not used it but it's the most common recommendation I've seen on this list... -- Paul Winkler http://www.slinkp.com
LeakFinder might still not work with Zope2.7.0 but let my advice that the most common memory leaks are huge lists with big objects. Do you have any functions that create lists of either *many* instances or instances that refer to objects which take up a lot of memory. I had a few memory leaks when I did some custom sorts on lists of objects of type Photo. I've also experienced memory leaks in External methods when creating lists filled with non-persistant instances; something like this: class SearchResult: def __init__(self, brain): self._brain = brain def showURL(self): return self._brain.url() def MyExternalMethod(self, # to get the whole zope tree searchterm): found = self.DoFindSomething(searchterm) results = [] for each in found: results.append(SearchResult(each)) return results This should work with python's garbage collection but it's code like this that is risky. I don't know why but it just is. Paul Winkler wrote:
On Thu, Jun 10, 2004 at 09:18:22AM +0200, Einar N?ss Jensen wrote:
I'm Running Zope 2.7.0 and python 2.3.3 on Debian with kernel 2.6.4
I'm experiencing a rather anoying memory leak (?) wich causes the need of a restart of zope once a week or so. something in my zope causes the swap-partition to fill up (1,5 Gig), and eventually zope will stop responding. When I restart zope, Everything is back to normal, and the the swap partition slowly starts growing again.
I have a sneaking suspicion that this is caused by some External methods (we are using a lot)
So: How may I track memory usage in zope, particulary: How can I find out wich object is "gun on the run".
google for LeakFinder. I have not used it but it's the most common recommendation I've seen on this list...
-- Peter Bengtsson, http://www.peterbe.com
participants (3)
-
Einar Næss Jensen -
Paul Winkler -
Peter Bengtsson