Benji York wrote at 2008-3-25 14:24 -0400:
> ... commit contentions ...
>> Almost surely there are several causes that all can lead to contention.
>> We already found:
>> * client side causes (while the client helds to commit lock)
>> - garbage collections (which can block a client in the order of
>> 10 to 20 s)
>Interesting. Perhaps someone might enjoy investigating turning off
>garbage collection during commits.
A reconfiguration of the garbage collector helped us with this one
(the standard configuration is not well tuned to processes with
large amounts of objects).
>> - invalidation processing, espicially ZEO ClientCache processing
>Interesting. Not knowing much about how invalidations are handled, I'm
>curious where the slow-down is. Do you have any more detail?
We have a component called RequestMonitor which periodically
checks for long running requests and logs the corresponding stack
This monitor very often sees requests (holding the commit lock)
which are in "ZEO.cache.FileCache.settid".
As the monitor runs asynchronously with the observed threads,
the probability of an observation in a given function
depends on how long the thread is inside this function (total
time, i.e. visits times mean time per visit).
>From this, we can conclude that a significant time is spend in
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org