I want to use OpenLDAP with FreeRadius but after some tests I have a big problem with performance.
For 1 client with continuously search using ldapsearch command the throughput rate is only 3-4 requests/second. (There are about 600,000 entries on ldap) I also test by put only 10,000 entries on ldap but the throughput rate is not different much.
When I increase the number of simultaneous client continuously send requests to ldap. The throughput rate sharply decreases. With 16 simultaneous clients, the throughput rate is 0.2 request/second. Over 16 clients, OpenLDAP will saturate.
I also write my own client program using OpenLDAP library to measure which part drop the performance down. My client open connection to ldap, do 2 searches and then close the connection. After run it, I found that for each search request, 66% of time spends on ldap_simple_bind_s function. Each ldap_search_ext_s takes 16% and 2% for others.
On this test I use OpenLDAP-2.0.27 on RedHat 7.3 machine, Intel Xeon 2 GHz dual CPU with 2 GB RAM, Adaptec SCSI host adapter (aic7899) on RAID5, BROADCOM NetXtreme BCM5702X Gigabit Ethernet Adapter (on board). Number of the data in the ldap is about 600,000 entries.
The following is some tuning I made on slapd.conf
# Indices to maintain
index objectClass eq
index products eq
index uid eq
index username,realm eq
index mail eq
index domain eq
also do this test on OpenLDAP-2.1.12 and the throughput rate is as same as
(I also do this test on OpenLDAP-2.1.12 and the throughput rate is as same as 2.0.27)
While the test is running, the ldap server load is only about 2 and there is some physical memory left. But I wonder why the number of threads is always being 9? Why does it not increase to share works? Am I do something wrong? Or what is the right way to tune OpenLDAP to gain an acceptable performance with this enormous data? Anyone help me please…