Eu consertei esse aviso reindexando:
systemctl stop slapd
rm /var/lib/ldap/alock
slapindex
chown -R ldap:ldap /var/lib/ldap/
systemctl start slapd
Eu instalei um servidor openldap com o memberof function no centos via slapd.conf: parte necessária da configuração?:
index objectClass eq,pres
index ou,cn,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
nos logs do openldap:
SRCH attr=uid displayName mail member
Jun 21 15:53:52 rhsfugt001 slapd[26924]: <= bdb_equality_candidates: (memberOf) not indexed
Eu não encontrei uma solução para corrigir isso ...
É apenas um aviso dizendo que alguns atributos usados em um filtro para esse resultado de pesquisa específico não foram indexados.
Se a indexação de um atributo ou não faz sentido, só pode ser determinado observando o filtro que está causando esse aviso.
Você também pode reduzir significativamente o menor desempenho da pesquisa ao adicionar índices para atributos com grandes conjuntos de resultados para um valor distinto.
Exemplo típico para um antipadrão de indexação:
Vamos supor que (uid=foobar)
sempre retorne um resultado de pesquisa.
Então, obviamente, você indexa o atributo uid :
index uid eq
Agora é bastante comum ter filtros um pouco mais complexos, por exemplo para pesquisar apenas usuários "ativos":
(&(uid=foobar)(organizationalStatus=active))
Se você tiver muitos usuários correspondentes a (organizationalStatus=active)
, o desempenho da pesquisa será significativamente pior se você tiver apenas um índice devido a esse aviso não indexado!
O motivo é que, para cada atributo indexado, um conjunto de candidatos a pesquisa é gerado e, em uma segunda etapa, os conjuntos de candidatos a pesquisa são filtrados com as asserções não indexadas.
Portanto, no exemplo acima, index uid eq
resultará em uma candidata de pesquisa configurando cardinalidade de um, enquanto index uid,organizationalStatus eq
produzirá dois conjuntos de candidatos a pesquisa, uid ainda com cardinalidade um, mas organizationalStatus com cardinalidade todos .
= > Não adicione um índice apenas para se livrar do aviso sem analisar os filtros de pesquisa usados e os possíveis tamanhos dos conjuntos de candidatos à pesquisa!
Tags openldap