Назад | Перейти на главную страницу

Когда я изменяю индекс в slapd.conf, тот же запрос LDAP не возвращает данные

Я использую openLDAP на сервере CENTOS.

Для тестирования я использую JMETER с запросом LDAP и мое программное обеспечение, использующее эту запись.

Я хочу оптимизировать конкретный запрос, я усиленно ищу атрибут OU: описание. Для его поиска используется атрибут l: поисковый фильтр l=username. Если мой индекс (в slapd.conf):

index ou,description,l           eq,pres,sub

Jmeter не возвращает поле описания, и мое программное обеспечение больше не позволяет мне вести журнал.

Если я удалю эту строку из slapd.conf или использую: `index ou, description eq, pres, sub, у меня будет такое же среднее время ответа.

Как я могу оптимизировать свои характеристики?
Зачем при индексации я удаляю атрибут, который я хочу из ответа, и лишает мою программу возможности использовать мой каталог?

Каждые когда вы добавляете или удаляете индекс, который вам нужно запустить slapindex и не забудьте сохранить правильные разрешения для файлов базы данных. Например, в debian с OpenLDAP вам необходимо:

/etc/init.d/slapd stop
slapindex
chown openldap:openldap /var/lib/ldap/*
/etc/init.d/slapd start

Я закончил этим

sudo /etc/init.d/slapd stop

sudo -u insert-your-openldap-server-user-here -c slapindex -v

sudo /etc/init.d/slapd start

Итак, в моем ящике debian пользователь openldap, что делает команду похожей на

sudo -u openldap slapindex -v -d 1

Хотя исходный ответ постера решен, вот решение для пользователей OpenLDAP 2.4. OpenLDAP 2.4 больше не использует простые файлы конфигурации, но все должно быть изменено с помощью ldapmodify.

Сначала вам нужно определить вашу базу данных, о которой идет речь.

[root@ldap-server ~]# cd /etc/openldap/slapd.d/cn=config
[root@ldap-server cn=config]# ls
cn=schema       olcDatabase={0}config.ldif     olcDatabase={1}monitor.ldif
cn=schema.ldif  olcDatabase={-1}frontend.ldif  olcDatabase={2}hdb.ldif

База данных здесь olcDatabase={2}hdb.ldif и проверка индексов с помощью grep дает:

[root@ldap-server cn=config]# grep olcDbIndex olcDatabase\=\{2\}hdb.ldif
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub

Если мне нужно добавить, например, индекс плаката l, Я бы подготовил следующий ldif-файл:

[root@ldap-server ~]# cat ldap-hdb-tuning.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: ou,description,l eq,pres,sub

Последним шагом будет запуск файла с ldapmodify.

[root@ldap-server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -D cn=config -f ldap-hdb-tuning.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

Если вы затем посмотрите на /var/lib/ldap вы заметите новый index.file с именем l.bdb который должен расти, если вы добавляете новые записи. Обратите внимание, что я еще не выяснил, выполняется ли создание индекса для существующие записи (В настоящее время я делаю это прямо сейчас), но я адаптирую этот ответ, когда узнаю больше.