[Zope-dev] Memory 2.1.4-2.1.6 a.k.a. how to get objects out of the
cache
Eric Sattler
sattler@enteract.com
Sat, 27 May 2000 10:59:45 -0500
All,
I also am having severe problems with memory creep. Our problem
exhibits itself by quickly using gobs of memory and requiring a
zope restart after about a day and a half at about 100M resident.
First our configuration:
Core Components:
FreeBSD 4.0/FreeBSD 3.4 - on separate machines of course
Postgres 6.5.3/Postgres 7.0(fixes some memory leaks)
Python 1.5.2
Zope 2.1.4/2.1.6 have tried both
pcgi with ZServer
Apache w/mod_ssl 1.3.9 and 1.3.12
Products:
ZPySQLDA
SQLSession
GenericUserFolder
I have looked at a lot of different things. This includes:
Installing the gc(garbage collection) python package
- Neil Schemenauer's patches
Installing Postgres 7.0(fixes some connection memory leaks)
Tracking the cache cleanup inside zope
Tracking thread locking inside DB.py, Transaction.py
Results:
gc python didn't help alleviate the problem
Postgres 7.0 instead of 6.5.3 didn't help the problem
I do see GenericUserFolder and SQLSession objects with the
Control_Panel_Debug screen, and they do not seem to go away. I wrote
a simple python script to do nothing more than authenticate (log in)
using the GenericUserFolder method docLogin. The memory usage quickly
grows out of control. After waiting 15 minutes(my cookie timeout),
no decrease in memory usage. The objects are still in the cache also.
Restarting zope clears everything up, and starts out nice and clean
again.
We have a cron job doing this right now.
Questions:
1. How does a user's connection resources etc. get cleaned up
by Zope after a cookie timeout? Do I need to do this myself?
2. How does a genericuserfolder's set of objects used by
an
authenticated user get cleaned up. I can't seem to make those
objects get reclaimed by the system, even when the user logs
off?
3. I am not explicitly removing SQLSession objects. Will my usage
counts for these objects remain > 1, thereby never allowing them
to get cleaned up, and thereby keeping my usage counts for
genericuserfolder's > 1?
4. Since GenericUserFolder inherits from Folder objects, is it
possible that the reason my memory grows so fast is that Zope
does not release the resources used by a user properly, during
an abrupt disconnect?
I will assist/help trying different things to try to solve this problem!
thanks.
eric.