Hi.

After the last episode of "killall slapd; db4.2_recover; /etc/init.d/slapd 
start"
my DB_CONFIG looks like this:

#txn_checkpoint         128     15      1
set_cachesize           0       252428800        0
set_lk_max_objects      100000
set_lk_max_locks        100000
#
set_lk_max_lockers      100000
#
set_lg_regionmax        1048576
set_lg_max              8388608
set_lg_bsize            2097152
set_lg_dir              /var/lib/ldap/logs/
#set_lk_detect DB_LOCK_DEFAULT
set_tmp_dir             /tmp/
#set_flags DB_TXN_NOSYNC
#set_flags DB_TXN_NOT_DURABLE

Note the enormous amount of possible locks, lockers and lockable objects. 
So far, only increasing this amount seems to be the way to circumvent the 
dreaded sched_yield()-loop.

My last change is

  set_lk_max_lockers      100000

which was still default and seems to be to _real_ culprit, as per 
ITS#2030:

http://www.openldap.org/its/index.cgi/Software%20Bugs?id=2030;selectid=2030;usearchives=1
(Note how old this bug report to the OpenLDAP ITS is.)

Right now I am running some stress tests on my systems, but those %$/&%$§ 
bastards never locked up, when I was actively trying to push them over the 
edge.

It would be really helpful, if anybody experiencing those problems could 
check with increased locker-settings (as seen above) if they still have 
that problem.

Grüße,
Sven.

-- 
Sven Hartge -- professioneller Unix-Geek und alltime Nerd
Meine Gedanken im Netz: http://sven.formvision.de/blog/

Reply via email to