[ZODB-Dev] Re: checking what refers to an object in zodb
    Laurence Rowe 
    l at lrowe.co.uk
       
    Fri May  4 16:25:18 EDT 2007
    
    
  
Chris,
I think you're looking at forward references when you want to look at 
back references.
This might help: http://plone.org/documentation/how-to/debug-zodb-bloat
(you might have to change the refmap to be in a zodb with that much data 
though)
Laurence
Chris Withers wrote:
> Hi All,
> 
> We have a big(ish) zodb, which is about 29GB in size.
> Thanks to the laughable difficulty of getting larger disks in big 
> corporates, we've been looking into what's taking up that 29GB and were 
> a bit surprised by the results.
> 
> Using space.py from the ZODBTools in Zope 2.9.4, it turns out that we 
> have a lot of PersistentMapping's:
> 
> 990,359    13,555,382,871    Persistence.mapping.PersistentMapping
> 
> So, that's almost half of the 29GB!
> 
> AT's default storage is a PersistentMapping called _md so this isn't too 
> surprising. However, when looking into it, it turns out that half of the 
> PersistentMapping's actually appear to be workflow_history's from 
> DCWorkflow.
> 
> To try and find out which objects were referencing all these workflow 
> histories, we tried the following starting with one of the oid of these 
> histories:
> 
> from ZODB.FileStorage import FileStorage
> from ZODB.serialize import referencesf
> 
> fs = FileStorage(path, read_only=1)
> data, serialno = fs.load(oid, '')
> refs = referencesf(data)
> 
> To our surprise, all of the workflow histories returned an empty list 
> for refs.
> 
> What does this mean? Is there a bug that means these objects are hanging 
> around even though there are no references? Are we using the wrong 
> method to find references to these objects?
> 
> (if it helps, we pack to 1 day and each pack removes between 0.5GB and 
> 1GB from the overall size)
> 
> If there's any more info that would be helpful here, please ask away...
> 
> cheers,
> 
> Chris
> 
    
    
More information about the ZODB-Dev
mailing list