Я использую 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
который должен расти, если вы добавляете новые записи. Обратите внимание, что я еще не выяснил, выполняется ли создание индекса для существующие записи (В настоящее время я делаю это прямо сейчас), но я адаптирую этот ответ, когда узнаю больше.