nwingfield@dixon-hughes.com wrote at 2004-9-2 14:41 -0400:
I have a ZCatalog containing some 400,000+ objects. I recently rebuilt the catalog due to corruption, so it should be in pristine condition. Today I issued a simple query (one condition) of the ZCatalog which should have returned a very large number of objects. My intention was to generate a data export that I could then import into another system. The query ran for 2 hours, at which point I discovered that Zope was hung and completely unresponsive. I had to break out the 'kill -9' to get it to die.
Learn about how to analyse a "spinning" Zope (there is a HowTo on "zope.org"). I attach a little "GDB source file" (usually used as GDB init file ".gdbinit"). It defines the command "pfr" ("print frame") which can be used in "eval_frame" frames to output source file name and function this "eval_frame" is used for. This allows you to analyse the Python traceback from C level. -- Dieter def ps x/s ({PyStringObject}$arg0)->ob_sval end def pfr ps f->f_code->co_filename ps f->f_code->co_name p f->f_lineno end define pyo print _PyObject_Dump($arg0) end define pyg print _PyGC_Dump($arg0) end