LDAP performance checker

Brendan Kearney bpk678 at gmail.com
Mon Sep 22 03:24:58 CEST 2014


On Sat, 2014-09-20 at 19:17 -0400, Arran Cudbard-Bell wrote:
> Frustrated by the lack of any LDAP performance checker that was simple to configure,
> easy to build, and actually worked, I wrote this:
> 
>   https://github.com/arr2036/ldapperf
> 
>   https://github.com/arr2036/ldapperf/archive/v0.1.tar.gz
> 
> Maybe someone else will find it useful.
> 
> With a set of 10,000 objects, with random object retrieval (using full DN and base scope) 
> with OpenLDAP 2.4.39 + LMDB on a 12 core E5-2697 v2 @ 2.7Ghz with Ubuntu 14.04,
> 24 threads on the server, 50 threads on ldapperf i get around 45,000 TPS.
> 
> Retrieving the same object multiple times (possibly taking advantage of some sort of query
> cache) I get between 60,000-66,000 TPS.
> 
> Now you can prove (or not) that FreeRADIUS is the bottleneck :)
> 
> Arran Cudbard-Bell <a.cudbardb at freeradius.org>
> FreeRADIUS development team
> 
> FD31 3077 42EC 7FCD 32FE 5EE2 56CF 27F9 30A8 CAA2
> 
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

what means this?  fedora 20 with everything up to date...

[brendan at desktop ldapperf-0.1]$ make
gcc -Wall -lldap -lpthread -g -o ldapperf ldapperf.c
ldapperf.c: In function ‘lp_conn_init’:
ldapperf.c:336:2: warning: implicit declaration of function
‘ldap_init’ [-Wimplicit-function-declaration]
  ld = ldap_init(ldap_host, ldap_port);
  ^
ldapperf.c:336:5: warning: assignment makes pointer from integer without
a cast [enabled by default]
  ld = ldap_init(ldap_host, ldap_port);
     ^
ldapperf.c:351:3: warning: implicit declaration of function
‘ldap_simple_bind_s’ [-Wimplicit-function-declaration]
   rc = ldap_simple_bind_s(ld, bind_dn, password );
   ^
ldapperf.c:355:4: warning: implicit declaration of function
‘ldap_unbind_s’ [-Wimplicit-function-declaration]
    ldap_unbind_s(ld);
    ^
ldapperf.c: In function ‘lp_query_perform’:
ldapperf.c:402:2: warning: implicit declaration of function
‘ldap_search_s’ [-Wimplicit-function-declaration]
  rc = ldap_search_s(ld, base_dn_p, scope, filter_p, NULL, 0,
&search_result);
  ^
ldapperf.c:426:5: warning: implicit declaration of function
‘ldap_get_values’ [-Wimplicit-function-declaration]
     if ((values = ldap_get_values(ld, entry, attribute)) != NULL){
     ^
ldapperf.c:426:17: warning: assignment makes pointer from integer
without a cast [enabled by default]
     if ((values = ldap_get_values(ld, entry, attribute)) != NULL){
                 ^
ldapperf.c:431:5: warning: implicit declaration of function
‘ldap_value_free’ [-Wimplicit-function-declaration]
     ldap_value_free(values);
     ^
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.8.3/../../../../lib64/libldap.so: undefined reference to symbol 'ber_free'
/usr/bin/ld: note: 'ber_free' is defined in DSO /lib64/liblber-2.4.so.2
so try adding it to the linker command line
/lib64/liblber-2.4.so.2: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make: *** [ldapperf] Error 1



More information about the Freeradius-Users mailing list