A place to throw notes on ZODB and Zope memory consumption -
An informative post from DieterMaurer? on the zope list:
The ZODB aimed at ease of integration and ease of implementing simplemulti-threaded applications (such as Web application servers).To make the second easier, it removed a major fault class: lockingfaults in application code. With the ZODB, you need not to worryabout setting locks to make the modification of persitent objectssafe. Because of that, you will usually not have problems with deadlocksor data inconsistencies due to forgotten locking.However, this ease has a price: the quite costly ZODB cache maintainedfor each connection in a connection pool. To limit RAM consumption,the ZODB versions before 3.4 had a limit on the number of connectionsin the pool. With ZODB 3.4, the number of connections are no longerlimited. Connections exceeding the pool size become temporary connectionsthe cache of which is destroyed when the connection is closed.Thus, you can now have a rather small number of ZODB connections(to hold RAM consumption in check) and a rather large number of workersto reduce the risk of deadlocks caused by resource exhaustion.If you are ready to modify ZServer? a bit, you could even createworkers on demand (usually, they are preallocated).However, this will cost you much of your control over resource usage...