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@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@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