Slapd est le nom de l'implémentation d'un serveur LDAP au sein du projet libre de référence OpenLDAP.
Sur un slapd en version 2.4.44 installé sur un Debian Stretch (9), la fonctionnalité d'indexation, qui, comme sur un système de gestion de bases de données permet d'accélérer les recherches dans la base, a un comportement surprenant. Je vais énoncer ce que je trouve bizarre, je n'ai pas de réponse.
J'ai effectué mes essais sur deux serveurs fraîchement installés et dotés de la même configuration slapd (cela se vérifie avec un ldapsearch -Y external -H ldapi:/// -b cn=config
+ diff
) et dans lesquels j'importe la même base de données (obtenue avec un slapcat
) avec un slapadd
.
La doc' OpenLDAP énonce que si l'on ajoute / supprime des index dans la configuration, l'indexation se fait en tâche de fond : « If this setting is changed while slapd is running, an internal task will be run to generate the changed index data. All server operations can continue as normal while the indexer does its work. If slapd is stopped before the index task completes, indexing will have to be manually completed using the slapindex tool. ». Je nuance :
/var/lib/ldap/data.mdb
) reste inchangée ;ldapsearch
, même en attendant plus de 20 secondes (la plupart des applications auront abandonnées avant…).De même, je constate une grande variation dans la consommation de RAM par la fonctionnalité d'exploitation… Entre 29 % de la RAM de la machine consommée par slapd et 65 %, il y a quand même un écart non négligeable.
Si la taille de la base de données dépasse la taille maximale prédéfinie (1 Go), alors l'indexation s'arrête nette (car plus rien ne peut être écrit dans la base de données). Si l'on change la taille de la base de données en direct avec un ldapmodify
, l'indexation ne reprend pas son cours (conso CPU nulle, taille de la base de données inchangée). Si l'on la force avec la commande sudo -u openldap slapindex
, la taille de la base de données reste inchangée.
La taille de la base de données peut varier du tout au tout entre deux suppressions de la base de données puis re-création avec un slapadd
:
slapindex
…