ovdb update

Heath Kehoe heath.kehoe at intermec.com
Sun Nov 5 03:10:53 UTC 2000


FYI

I am finishing up a new feature for ovdb that is an attempt to address
the problem where ovdb deadlocks during high nnrpd connection rates.

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.

I will be adding this code to CURRENT soon.  I can also make it available
for 2.3 or 2.3.1 (it's based on ovdb2), if anyone wants to try it.

-heath




More information about the inn-workers mailing list