[Zope] External scripts objects memory not released ?

Charlie Reiman creiman@kefta.com
Wed, 12 Jun 2002 11:21:37 -0700


I have to agree with...uh... dammit, too many quote levels. It's taking too
much memory. If you restart the server and it takes substantially less
memory, then a leak is the only reasonable conclusion. I myself have found a
leak in 2.5.1 (Solaris) so I know they are there.

I suggest you attempt to isolate the issue using the Debug control panel
screen, then submit a collector issue: http://collector.zope.org. In the
meantime, you may need to resort to periodic server restarts via cron.
However, given the magnitude of your heaps it's possible that you're leaking
so fast you won't be able to keep the servers up for more than a few hours
in production.

There is also a leak detector product on zope.org that might give you some
help although I have not had time to try it out.

http://www.zope.org/Members/hathawsh/LeakFinder


> -----Original Message-----
> From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of
> Jerome hebert
> Sent: Wednesday, June 12, 2002 2:02 AM
> To: zope@zope.org
> Cc: Dieter Maurer
> Subject: [Zope] External scripts objects memory not released ?
>
>
>
> At 21:40 11/06/2002, Dieter Maurer wrote:
> >Jerome hebert writes:
> >  > Zope 2.4 on a Debian 2.2 linux server.
> >  > ...
> >  > socrate:~# memstat  | sort -rn | more
> >  > 1958684k
> >  >   157416k: PID 14967 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14966 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >Your Zope uses 157 MB. This is not yet something, you need to
> worry about.
> >
> >Under Linux, threads are implemented by processes. However, they
> >share the memory. All Zope processes/threads together use
> >157 MB, not each one of them.
>
>
>
> Still 157 MB is too much for a Zope server with so few hits.
>
> There must be something wrong. When I start Zope, it only takes a few
> MB of memory, going to more than one hundred is not acceptable.
>
> If Zope is not able to use less memory, I will have to stay with Apache
> and Perl. But more likely the problem is coming from my setup because
> I'm new to Zope and Python so perhaps I certainly haven't done the right
> thing.
>
> One possibility I see is that the problem is coming from my
> external methods.
>
> I have an external method doing SOAP request (using the SOAP.py module)
> and I use a dump python class around the returned SOAP objects to
> avoid the problem of security exception when accessing the SOAP
> objects in DTML.
>
> Possibly the SOAP objects are never destroyed by Zope and this
> would explain why Zope continuously grows in memory.
>
> Can someone explain how the object returned from external scripts
> are destroyed by Zope after the HTTP request has been completed ?
>
> Below is an extract of my external method:
>
> # get_objects()  IS THE EXTERNAL METHOD CALLED FROM DTML
> class somp:
>       """ A class to access SOMP Agent"""
>       __allow_access_to_unprotected_subobjects__ = 1
>
>       def get_objects(self, type='', id='', status='',
> options={'attributes':''}):
>            """ get objects"""
>            rt = []
>            self.somp = SOAP.SOAPProxy(self.proxy, unwrap_results = 0,
> namespace = self.namespace )
>            objects = self.somp.get_objects(type=type, id=id,
> status=status,
> options=options)
>            for object in objects:
>                 sop = sompobject(object)
>                 sop.somp = self.somp
>                 rt.append(sop)
>            return rt
>
>
> # DUMP PYTHON CLASS AROUND SOAP OBJECTS
> class sompobject:
>       __allow_access_to_unprotected_subobjects__ = 1
>
>       def __init__(self, object):
>            self.__allow_access_to_unprotected_subobjects__ = 1
>            self.object = object
>
>       def __getattr__(self,name):
>            try:
>                 return self.object[name]
>            except AttributeError:
>                 try:
>                      return self.object['attributes'][name]['value']
>                 except AttributeError:
>                      raise AttributeError, "Was Asking for
> attribut " + name
>
>
> Regards,
> Jerome.
>
> At 21:40 11/06/2002, Dieter Maurer wrote:
> >Jerome hebert writes:
> >  > Zope 2.4 on a Debian 2.2 linux server.
> >  > ...
> >  > socrate:~# memstat  | sort -rn | more
> >  > 1958684k
> >  >   157416k: PID 14967 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14966 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14965 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14964 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14963 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >  >   157416k: PID 14692 (/opt/Zope-2.4.0-linux2-x86/bin/python)
> >Your Zope uses 157 MB. This is not yet something, you need to
> worry about.
> >
> >Under Linux, threads are implemented by processes. However, they
> >share the memory. All Zope processes/threads together use
> >157 MB, not each one of them.
> >
> >
> >Dieter
>
>
>
> __________________________________________________________________
> ____________
> ifrance.com, l'email gratuit le plus complet de l'Internet !
> vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP...
> http://www.ifrance.com/_reloc/email.emailif
>
>
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )
>