Archivado en la categoría (Directorios, I+D+i) por candido.rodriguez
Publicado el 05-02-2010

En el laboratorio de I+D de PRiSE hemos estado trabajando en un sencillo test de rendimiento de directorios virtuales, como primer paso para evaluar si éstos son una opción viable en nuestras infraestructuras tecnológicas.

Un directorio virtual nos ofrece un interfaz LDAP que actúa de intermediario con respecto a otro sistema de información, como una base de datos o otro LDAP. Además, antes de servir al cliente los datos tiene la capacidad de trabajar con ellos por lo que pueden ser adecuados previamente a nuestras necesidades.

El directorio virtual que hemos desarrollado está basado en Perl y utiliza los paquetes Net::LDAP::Server y DBI. El objetivo es ver si al conectar dicho directorio virtual con una base de datos MySQL los tiempos son aceptables o no. Para ello, hemos creado una batería de tests donde se realiza la búsqueda N veces de manera secuencial de una entrada en el directorio. No se trataba de ver el rendimiento ante pruebas de stress sino ver si al menos superaba esta sencilla prueba.

Se ha realizado la siguiente batería de tests:

  • 10 búsquedas
  • 50 búsquedas
  • 100 búsquedas
  • 250 búsquedas
  • 500 búsquedas
  • 750 búsquedas
  • 1000 búsquedas

Dicha batería se ha repetido 10 veces para quedarnos con el valor medio y evitar así resultados extraños. Los entornos que han sido probados y las búsquedas realizadas son:

  • Búsquedas en un OpenLDAP.
    • DN base: dc=test,dc=org
    • Scope: base
    • Filtro: (objectClass=*)
    • Atributo requerido: description
  • Búsquedas en un MySQL.
    • Sentencia SQL: select ‘dc=test,dc=org’ as dn, ‘dcObject\norganizationalUnit’ as objectClass, ‘test’ as dc, ‘test’ as ou, Test.Desc as description from Tabla where Id=’uno’
  • Búsquedas en un directorio virtual que conecta con dicho MySQL.
    • DN base: dc=test,dc=org
    • Scope: base
    • Filtro: (Id=uno)
    • Atributo requerido: description

El directorio virtual realizará la búsqueda indicada para el MySQL a la hora de obtener los datos y responder al cliente LDAP.

Los resultados obtenidos son:

Performance

Como podemos ver, a medida que incrementamos el número de búsquedas secuenciales seguidas, el directorio virtual es el más lento de los 3, aunque dicho retraso es bastante aceptable, como veremos más adelante. También podemos ver que el acceso a BD termina siendo más rápido que a un LDAP, y es debido al sistema de caché de MySQL.

Pero veamos los valores, expresados en segundos, que obtuvimos:

Tabla

Como podemos ver, al principio (con 10 búsquedas seguidas) el acceso a LDAP es más rápido que el acceso a la BD, ya que todavía el caché de la BD no ha comenzado a funcionar a pleno rendimiento. Además, el directorio virtual se comporta al mismo nivel que la base de datos. A medida que crece el número de peticiones, hay un retraso de un 35% aproximadamente, que gracias a que el tiempo de obtención de los resultados es bajo no va a implicar un coste elevado al integrar nuestras aplicaciones con el directorio virtual.

Tenemos claro que estas pruebas no son definitivas a la hora de evaluar un directorio virtual, pero al menos sabemos que si son cifras que prometen como para seguir trabajando en otro tipo de evaluaciones.

(1) Comment    Read More