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