Hello Guys,
Last week I upgraded our openldap server to 2.4.16 and we had terrible performance problems.
Quanah suggested me to use this options with bdb compilation: --enable-posixmutexes --with-mutex=POSIX/pthreads I compiled and tested openldap with different versions of BDB and the results are odd:
OpenLDAP version
BDB version
Test time 1 (seconds)
Test time 2 (seconds)
Test time 3 (seconds)
2.4.16
BDB 4.5.20
256.2008
260.5799
273.933
2.4.16
BDB 4.6.21
265.428
260.2496
255.0599
2.4.16
BDB 4.7.25
261.5573
254.2001
259.9456
2.3.30-5 (debian package)
BDB 4.2.52
257.7173
251.3512
250.8456
The test consist on make some operations: for ($i=0; $i<=1; $i++) { make_add(1000); make_search(10000); make_mod(500); make_get_entries(10000); make_del(200); make_add(1000); make_search(10000); make_mod(500); make_get_entries(10000); make_del(200); }
Like you can see, the best result was using to old version of openldap server with the old version of BDB.
Even more odd was the use of CPU. Using these old versions, the consume of CPU was half then using the new ones.
The slapd.conf and DB_CONFIG were the same on all tests.
Here are the compilation lines:
BDB: CFLAGS="-Wall -g -O2" CPPFLAGS="-I/usr/include/tcl8.5" LDFLAGS="-lpthread" ../dist/configure --enable-cxx --enable-compat185 --enable-rpc --enable-tcl --enable-posixmutexes --with-uniquename --with-tcl=/usr/lib/tcl8.5 --with-mutex=POSIX/pthreads --enable-test
Openldap: CFLAGS="-Wall -g -D_FILE_OFFSET_BITS=64 -O2" ./configure --prefix=/usr --libexecdir=/usr/lib --sysconfdir=/etc --localstatedir=/var --mandir=/usr/share/man --enable-debug --enable-dynamic --enable-syslog --enable-proctitle --enable-ipv6 --enable-local --enable-slapd --enable-aci --enable-cleartext --enable-crypt --enable-spasswd --enable-modules --enable-rewrite --enable-slp --enable-wrappers --enable-bdb=mod --enable-hdb=mod --enable-ldap=mod --enable-meta=mod --enable-monitor=mod --enable-relay=mod --enable-overlays=mod --with-subdir=ldap --with-cyrus-sasl --with-threads --with-tls=openssl --with-odbc=unixodbc
DB_CONFIG: set_cachesize 0 524288000 0 set_lk_max_objects 15000 set_lk_max_locks 15000 set_lk_max_lockers 15000 set_shm_key 5
slapd.conf: some index and cachesize 10000 idlcachesize 10000
Is there some wrong or these are the expected results ?
I appreciate any tip.
Best regards, João Alfredo