Openldap
openLDAP bdb_equality_candidates: (memberOf) 未編入索引
我已經通過 slapd.conf 在 centos 上安裝了一個帶有 memberof 功能的 openldap 伺服器:需要配置的一部分嗎?:
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
在 openldap 日誌中:
SRCH attr=uid displayName mail member Jun 21 15:53:52 rhsfugt001 slapd[26924]: <= bdb_equality_candidates: (memberOf) not indexed
我還沒有找到解決此問題的解決方案…
我通過重新索引修復了這個警告:
systemctl stop slapd rm /var/lib/ldap/alock slapindex chown -R ldap:ldap /var/lib/ldap/ systemctl start slapd
這只是一個警告,表示該特定搜尋結果的過濾器中使用的某些屬性未編入索引。
索引屬性是否有意義只能通過查看導致此警告的過濾器來確定。
在為具有較大結果集的屬性添加索引以獲取不同值時,您還可以顯著降低搜尋性能。
索引反模式的典型範例:
假設
(uid=foobar)
總是返回一個搜尋結果。所以很明顯你索引屬性uid:
index uid eq
現在使用稍微複雜一些的過濾器是很常見的,例如只搜尋“活躍”使用者:
(&(uid=foobar)(organizationalStatus=active))
如果你有很多匹配
(organizationalStatus=active)
的使用者,如果你只是一個索引,搜尋性能會明顯變差,因為這個未索引的警告!原因是為每個索引屬性生成一個搜尋候選集,並且在第二步中,使用未索引的斷言過濾搜尋候選集。所以在上面的例子
index uid eq
中會產生一個搜尋候選集基數為 1,同時index uid,organizationalStatus eq
會產生兩個搜尋候選集,uid仍然是基數 1,但organizationsStatus基數是 all。=> 不要添加索引只是為了擺脫警告而不分析使用的搜尋過濾器和搜尋候選集的可能大小!