Re: [Zope-dev] Memory 2.1.4-2.1.6 a.k.a. how to get objects out of the cache
Eric Sattler:
Jason,
I don't have time right now to post this to the zope newsgroup, but we are bleeding profusely, and could use any insight you might have...
Unfortunately just before recieving your message, I fired another one out because I have run out of tests. :(
I also am having severe problems with memory creep. Our problem exhibits itself by quickly using gobs of memory and eventually requiring a zope restart.
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 Apache w/mod_ssl 1.3.9 and 1.3.12
Products:
ZPySQLDA SQLSession GenericUserFolder
There was recently a post that detained a leak in a database product. I can't remeber if it was SQLSession, or what.
I have looked at a lot of different things. This includes:
Installing the gc(garbage collection) python package 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.
This is consistant with what I remember seeing on the list. I don't use any external databases, so my situation is really an argument for their being something amiss in Zope or Python.
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?
I don't use cookie here.
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? is there a magic cache setting somewhere?
Or GUF.
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?
That's funny that I am experienceing the same symptoms as you, but my installation is totally different. I'm not using GUF, or any DA's, and I'm running on RH 6.1. We really need to figure this out as a community. I am willing to try just about anything short of shipping my machine somewhere off premisis. ;) Bledding on the floor, Jason Spisak CIO HireTechs.com 6151 West Century Boulevard Suite 900 Los Angeles, CA 90045 P. 310.665.3444 F. 310.665.3544 Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.
Jason Spisak wrote: [...]
That's funny that I am experienceing the same symptoms as you, but my installation is totally different. I'm not using GUF, or any DA's, and I'm running on RH 6.1. We really need to figure this out as a community. I am willing to try just about anything short of shipping my machine somewhere off premisis. ;)
Ok, let's dig up some more info ( or perhaps I missed it ). Server setup, as in pcgi/Zserver/Apache w/proxypass, etc? Compiled on the machine, or binary distribution? If source, did you start with a clean tree, or did use use the diff upgrade, or did you use a new 2.1.6 tarball, and drop it on top of the 2.1.4 install? Bill
Bill Anderson:
Jason Spisak wrote:
[...]
That's funny that I am experienceing the same symptoms as you, but my installation is totally different. I'm not using GUF, or any DA's, and I'm running on RH 6.1. We really need to figure this out as a community. I am willing to try just about anything short of shipping my machine somewhere off premisis. ;)
Ok, let's dig up some more info ( or perhaps I missed it ).
Server setup, as in pcgi/Zserver/Apache w/proxypass, etc?
Nothing but straight ZServer/Medusa.
Compiled on the machine, or binary distribution?
Zope 2.1.1 binary distro. Not sure how it got to be 2.1.4/2.1.6, might have been the other person having problems, or my mistake. But the changes in 2.1.4 and 2.1.6 aren't anything in the Object publisher or Medusa so I don't think it makes a difference.
If source, did you start with a clean tree, or did use use the diff upgrade, or did you use a new 2.1.6 tarball, and drop it on top of the 2.1.4 install?
Bill
RH 6.1 2.2.12smp kernel Hardware RAID dual 350mhz Xenon 1 gig ram Vanilla Zope with no DA's, no Apache. BTW, Matthew gave me some advice last Friday to use the setcheckinterval line in z2.py and the performance gains are quite impressive. Anyone who is running smp should try it. All my best, Jason Spisak CIO HireTechs.com 6151 West Century Boulevard Suite 900 Los Angeles, CA 90045 P. 310.665.3444 F. 310.665.3544 Under US Code Title 47, Sec.227(b)(1)(C), Sec.227(a)(2)(B) This email address may not be added to any commercial mail list with out my permission. Violation of my privacy with advertising or SPAM will result in a suit for a MINIMUM of $500 damages/incident, $1500 for repeats.
Jason Spisak wrote:
Bill Anderson:
Jason Spisak wrote:
[...]
That's funny that I am experienceing the same symptoms as you, but my installation is totally different. I'm not using GUF, or any DA's, and I'm running on RH 6.1. We really need to figure this out as a community. I am willing to try just about anything short of shipping my machine somewhere off premisis. ;)
Ok, let's dig up some more info ( or perhaps I missed it ).
Server setup, as in pcgi/Zserver/Apache w/proxypass, etc?
Nothing but straight ZServer/Medusa.
Cool, eliminates suspects.
Compiled on the machine, or binary distribution?
Zope 2.1.1 binary distro. Not sure how it got to be 2.1.4/2.1.6, might have been the other person having problems, or my mistake. But the changes in 2.1.4 and 2.1.6 aren't anything in the Object publisher or Medusa so I don't think it makes a difference.
Have you considered trying a source-compile setup? There may have been something in the original binary that gets triggered when dynamically linking (does it do that? I haven't run a binary Zope distribution) to the libraries on your machine. I have witnessed this with X.
RH 6.1 2.2.12smp kernel Hardware RAID dual 350mhz Xenon 1 gig ram
Vanilla Zope with no DA's, no Apache.
BTW, Matthew gave me some advice last Friday to use the setcheckinterval line in z2.py and the performance gains are quite impressive. Anyone who is running smp should try it.
It is impressive. I love seing Zope serving static files in the 70rps range.
Can anyone please send me a complete code (DTML-methods) for publishing into zope an image field from an external database. ... and also inserting an uploaded image/gif from zope to an external database Thank you
participants (3)
-
Bill Anderson -
Jason Spisak -
Mohan Baro