[Zope-dev] Re: more on the segfault saga

Leonardo Rochael Almeida leo@hiper.com.br
15 Mar 2002 13:41:44 -0300


On Fri, 2002-03-15 at 08:19, Martijn Jacobs wrote:
> 
> Hello Leo, Matt, Brian, 
> 
> > I'm on it. Will send results when they're available. If anyone wants 
> > to talk to me during the period, I'll be on IRC.
> 
> If you need any assistance for anything, I'm at your service....
> Which channel/server are you on IRC?

The official unofficial Zope place on irc is #zope at
irc.openprojects.net. Lots of cool and very knowledgeable people hang
out there.

I'll be there today while I apply Matt's incref patches and run Zope

I also have a very demanding client who goes bezerk every time the site
is down, so I recomend you do the following, if you want to help with
debugging (this assumes you run Zope behind a proxy server such as
apache or squid):

* Install ZEO on your current Zope and configure both the ZEO Client and
Server on the same machine serving your site. Only the ZEO Client should
get the segfaults and it restarts much faster (less than 10 secs,
usually) than in standalone mode.

* Open a source Zope package in another directory. Open a Python source
package next to it. Configure Python to install it's files inside this
Zope tree (./configure --prefix=/path/to/Zope-src). Apply Matt's
patches, make and make install. Install ZEO in this instance but only
configure the ZEO Client, making it listen in a different port from the
other Zope. Copy over all the external methods and extra products, and
make it access the other instance ZEO Server. Don't forget to REDIRECT
STDERR TO A FILE (the best way is to redirect stderr to stdout and
append stdout to a file). Start it and check that it's working as
expected.

* Keep two configuration files of your frontend proxy around: one
pointing the site to the original Zope and another pointing the site to
the instrumented Zope. When you want to test the crashes, switch the
conf. files around and reload the proxy.

* Report everything you find in Zope stderr.

* If you want to increase the perceived stability of your site, put the
two following lines somewhere in the original Zope z2.py:

import gc
gc.disable()

It should stop crashing, but it'll start leaking instead. If the leak
isn't so severe that it allows you to restart only once a day, in the
period of least traffic, then leave it that way. Having ZEO Client will
ensure you have the least amount of downtime possible in this restart.

-- 
Ideas don't stay in some minds very long because they don't like
solitary confinement.