最近因为工作原因需要使用 OpenLdap ,对部分需要注意的问题做了一下总结
索引的问题
OpenLdap 可以添加索引来提高性能,但是新添加索引后会导致被添加的索引的属性作为查询条件无法找出老的数据,这时可以通过重建索引来解决问题。命令为:
slapindex -f slap.conf
如果要指定数据库的路径可以用 -F 参数
异步执行提高性能
ldap 包括一系列的执行命令,包括增、删、改、查等基本操作。在这些操作中又有“同步/异步”和“基本/扩展”的区别。
下面的接口是一组添加的接口:
- LDAPObject.add(dn, modlist) → int
- LDAPObject.add_s(dn, modlist) → None
- LDAPObject.add_ext(dn, modlist[, serverctrls=None[, clientctrls=None]]) → int
- LDAPObject.add_ext_s(dn, modlist[, serverctrls=None[, clientctrls=None]]) → None
在这组接口中 add 与 add_ext 是异步接口,带 s 后缀的是同步接口,调用后会返回调用的msgid。由于 OpenLdap 会开启多个进程所以添加多个节点时使用异步调用会大大提高性能。
但是需要注意的是调用结果需要通过 result 接口来返回结果,如果不执行 result 就结束可能会有意想不到的结果。
- LDAPObject.result([msgid=RES_ANY[, all=1[, timeout=None]]]) → 2-tuple