> I don't think you've mentioned what the latency is like between your
> ZEO server and clients. What's the ping time look like?
> As an example, let's say your average object size is only 1k, but due
> to network latency it takes 5ms per fetch. Let's say your slow page
> loads 1000 objects, and 100 of them are not in the cache. That's only
> 100k of data, but you've spent 500ms waiting on the network.
Yes, that looks like a good explanation for the problem.
> If this is indeed the problem, one symptom would be vastly better
> performance on "warm" pages when all the needed objects are in the
> client cache.
Which seems to be the case :)
> Is this a Zope 2 app? Have you checked the control
> panel to see what the cache stats look like?
No, it's a standalone ZODB-base web app. I am using WSGI daemon mode, so
the client cache should be preserved across requests. However, I suspect
it is just too small for our use case.
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org