[Zope-dev] Re: Zope/OpenBSD: Too many open files

David S. dgjs@acm.org
Thu, 29 Mar 2001 10:21:56 -0800


On Thu, Mar 29, 2001 at 11:39:16AM +0200, Ricardo Bermell wrote:
> 
> Yes, but not to infinity, which seems to be the number
> of sockets ('tcp streams') my zope will waste if i don't
> restart it every few days.
> 
> The question is, you can increase the limit of open file
> descriptors (before, i used the default 64, now 1024), 
> but it will only be a delay for Zope's dead.
> 
> Or... 
> do the unused sockets have a limited time of life?
> I've verified that at least in 36 hours they are 
> not terminated. 
> If any, who fixes this lifetime, Zope or OpenBSD?

I don't have any experience with Zope, but I'd guess that the problem
is in Zope, not OpeneBSD.  I particular, I suspect that garbage
collection in the underlying Python is the source.  Python does 
garbage collection by reference counting: when there are no more
references to an object, it will be deleted.  This garbage collection
algorithm is known to fail for objects with circular references.  If
some chain of references leads back to the original object, that 
object will never be deleted, even if it isn't being used anymore.
I'd guess that Zope is leaking file descriptors because it's 
creating sockets that aren't garbage-collected and aren't explictly
deleted.  We all know that good programming practice requires you
to close/free/delete resources once you're finished with them.  But
we also know that "good programming practice" is more an ideal than
a reality.

I'd try your question on a Zope list.

David S.
 


> 
> -- Ricardo
> 
> 
>