ovdb update

Russ Allbery rra at stanford.edu
Sun Nov 5 03:20:01 UTC 2000


Heath Kehoe <heath.kehoe at intermec.com> writes:

> Normally, each nnrpd process directly accesses the BerkeleyDB
> environment.  The process of attaching to the database (and detaching
> when finished) is fairly expensive, and can result in high loads in
> situations when there are lots of reader connections of relatively short
> duration.

> So to deal with this, I added a new server program that accesses
> BerkeleyDB on behalf of the nnrpds (kind of like an 'actived' for
> overview).  If enabled with an ovdb.conf option, ovdb_open (when called
> with OV_READ) will first try to connect to the 'readserver' instead of
> directly attaching to the database.  If the readserver is not available,
> it will proceed to open the database like before.

> The readserver is single-threaded, but uses non-blocking IO similar to
> innd/chan.c, so it can serve multiple nnrpds at once.  Also, multiple
> readservers are started (another ovdb.conf option) to improve
> responsiveness.  They alternately pick up new connections for a simple
> form of load balancing.

This sounds very cool, and similar to some of the plans Aidan had at one
point to spawn off nnrpd helper processes.  (I think one of the original
intentions there was to see if caching overview data across multiple
nnrpds would help performance, but I think BerkeleyDB is already doing
some of that, right?)

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>



More information about the inn-workers mailing list