Chris Withers wrote at 2007-8-9 17:09 +0100:
... I'm suffering with an app server that keeps blowing through all its memory.
I have a suspicion this is due to a dodgy python script or page template pulling too many objects into memory. However, by the time I know to look, the app server throws MemoryErrors for each and every request.
"ZODB.DB.DB" provides methods for detailed analysis of the cached objects. It is used for the "Extreme cache detail" ZMI page but can also be used differently (e.g. from an "External Methode" or via the "ZServer Monitor Server" interactively). Thus, provided the memory blowup comes from objects cached in ZODB caches, you have a good chance to find out at least what type of objects are causing this behaviour.
What're the best ways to go about debugging this? Would DeadlockDebugger help or will it suffer from the same problem?
"DeadlockDebugger" would help you only when the activity eating your memory would also considerably eat CPU resources (which may indeed be the case).
Of course, it'd be lovely if you could actually specify an upper memory bound for a particular request to use, and/or Zope as a whole, but these kinds of things always seem to stall at the development stage :-(
You should find the culprit. While a better cache management might avoid the MemoryError, the observed bad behaviour would trash your cache -- and following activities would be by several orders slower than usual.... -- Dieter