Projet

Général

Profil

Evolution #19597

Optimisation Recherche LDAP

Ajouté par Christophe LEON il y a environ 7 ans. Mis à jour il y a presque 7 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
10/03/2017
Echéance:
% réalisé:

0%

Distribution:

Description

Contexte : ~ 20 000 utilisateurs avec ~ 400 groupes
Constat : La recherche d'un usager pour le partage : La recherche est extrêmement longue

Solutions:

1) les champs cn et displayName ne sont pas indexés dans le Ldap
=> rectifier le slapd.conf et en relançant les index (Eole ? )

2) dans apps/user_ldap/lib/access.php (Ligne 710)
il y a une méthode fetchListOfUsers qui fait appel $this->batchApplyUserAttributes($ldapRecords);
si je commente cette ligne le temps de réponse est divisé par 3 et les réponses sont bien envoyées
A priori batchApplyUserAttributes permet de mettre à jour la bdd owncloud des users avec les infos LDAP, sauf que cela est lancé a chaque recherche et du coup ça plombe la recherche

3) core/js/sharedialogview.js une valeur de limit de recherche en dur à 200,
=> a étudier le passage à une valeur plus basse

Christophe

own_ldap.png Voir (52,1 ko) Christophe LEON, 24/03/2017 08:37

Owncloud_agenda_4.jpg Voir (7,53 ko) Christophe BRENELIERE, 04/04/2017 17:58

Owncloud_agenda_3.png Voir (4,97 ko) Christophe BRENELIERE, 04/04/2017 17:58

Owncloud_agenda_2.png Voir (2,48 ko) Christophe BRENELIERE, 04/04/2017 17:58

Owncloud_agenda_1.png Voir (1,31 ko) Christophe BRENELIERE, 04/04/2017 17:58


Demandes liées

Lié à Distribution EOLE - Tâche #19826: Optimisation recherche annuaire Fermé 22/03/2017

Révisions associées

Révision 5f7a0ce2 (diff)
Ajouté par Arnaud Fornerot il y a environ 7 ans

ajouter uid displayname email comme attribut de recherche (ref #19597)

Révision 21d5d674 (diff)
Ajouté par Arnaud Fornerot il y a environ 7 ans

patch afin de limiter le scop des recherches à 20 et application de needrefresh (ref #19597)

Historique

#1 Mis à jour par Arnaud FORNEROT il y a environ 7 ans

#3 Mis à jour par Arnaud FORNEROT il y a environ 7 ans

  • Statut changé de Nouveau à En attente d'informations

Je viens de mettre des traces dans fetchListOfUsers
Il ne passe pas dedans dans le cas de la recherche d'un utilisateur pour partage
Après il rentre bien dedans quand on va dans l'écran des utilisateurs.
Du coup je ne crois pas que l'on soit bien au bonne endroit
Je me trompe ?

Après je trouve le filtre bien étrange sur fetchListOfUsers
(&(|(objectclass=inetOrgPerson))(displayName=*)(displayName=*))

batchApplyUserAttributes me semble indispensable
C'est ce qui fait la mise à jour de l'utilisateur en fonction de l'annuaire.

#4 Mis à jour par Christophe LEON il y a environ 7 ans

Précision suite a discussion sur IRC

Lors d'une recherche ( chris par exemple ), le filtre généré est le suivant apps/user_ldap/user_ldap.php:getUsers

(&(&(objectclass=ENTPerson))(displayName=*)(|(uid=chris*)(displayName=chris*)(mail=chris*)))

L'index sur displayName serait donc en eq,subinitial

NOTE: uid, displayName et mail sont des éléments que nous avons renseignés dans la configuration

#5 Mis à jour par Arnaud FORNEROT il y a environ 7 ans

  • Statut changé de En attente d'informations à Résolu
  • Version cible mis à Envole 5.5

#6 Mis à jour par Christophe BRENELIERE il y a environ 7 ans

La recherche fonctionne correctement si on saisit l'identifiant de l'utilisateur et pas toujours si on saisit une partie du nom (voir images ci-jointes).
Rq : dans la configuration de base d'Owncloud, l'entrée LDAP n'est pas présente.

#7 Mis à jour par Christophe LEON il y a environ 7 ans

Attention la recherche owncloud fait du subinitial sur ldap

Cela signifie qu'il faut saisir le début de uid ou mail mais pas le milieu

En d'autres termes la recherche est
search* et non search

Je ne sais pas si c'est paramétrable si c'est le cas il faut prévoir l'indexation ldap sur du sub et non plus du subinitial

#8 Mis à jour par Arnaud FORNEROT il y a presque 7 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF