I just upgraded a client site from zope 2.6.2 to 2.8.1 (which I think
has ZODB 3.4.1). After the upgrade I'm seeing very slow initial load
times for objects from the zeo server (much slower than before). I
understand that the objects need to be loaded from disk (and
transfered to the client) but during the initial period (pre-cache) I
see the CPU spike to 100%. This must mean it isn't a disk problem as
much as a server to client transfer issue.
Here are some configuration parameters I have played with to try and
zodb_db cache-size - is this a per thread number as before or is it
for all threads? I have never seen it reach my setting. Before the
cache would get to the target number quickly. I assume this is
active objects (ie doesn't include ghosts?)
zeoclient cache-size - how does this interact with the above
setting? and how is it different (besides being in bytes).
zeo invalidation-queue-size - I cranked this up a bit hoping that
restarts of zope would recover a reasonable speed quicker not sure if
this is helping
Solaris 2.8, python 2.3.5, zope 2.8.1, box has 4GB memory which I
want to use!
My database has around 350k objects. I have zodb_db cache-size set
to 200k and zeoclient cache-size set to 500MB. zeo invalidation-
queue-size is set to 1000.
After running for several hours I have only seen the total active
objects in cache goto around 50k and size of process says in the
150MB range (before it would be in the 350MB range).
Any thoughts would be appreciated...
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org