我正在使用OpenDJ 3.0.0发行版。
我有两个基本dns,第一个是dc = tenant1,第二个是dc = tenant2,我创建的vlv索引是基于dc = tenant1,但ldap搜索发生在dc = tenant2
这是vlv索引,看起来像 过滤: (及(objectClass的= NS-nationsky碱基受试者)(UID = )(CN = ))
base dn:dc = tenant1 排序顺序:uid cn mail 范围:一级
当我尝试将ldapsearch与vlv控件一起使用时,会出现“#Server-side sort failed:Willing to Perform”,如下所示:
/ ldapsearch -p 1389 -h localhost -D'cn =目录管理员'-w'密码'-b'ou =人,ou =主题,dc = tenant2'-G 0:2000:1:0 -s one --sortorder uid“(uid = a )”cn </ p>
这一切都很好但是如果我的服务器中有太多条目,那么它将始终是“#服务器端排序失败:不愿意执行”的错误。(例如15000)
从访问日志中,我可以看到未经索引的搜索 [19 / Sep / 2016:23:06:38 +0800] SEARCH REQ conn = 35 op = 1 msgID = 2 base =“ou = People,ou = Subjects,dc = tenant2”scope = one filter =“(uid = a )“attrs =”cn“ [19 / Sep / 2016:23:06:40 +0800] SEARCH RES conn = 35 op = 1 msgID = 2 result = 0 nentries = 8458 unindexed etime = 2543
知道如何解决它吗?
答案 0 :(得分:2)
VLV索引和查询实际上是为了浏览众所周知的条目集(如所有用户)而不是不同的条目集。
因此,为了使用VLV索引,搜索请求必须与为该索引定义的基数,范围,过滤器和排序顺序相匹配(并且过滤器应该是常量)。
如果用(&amp;(objectClass = ns-nationsky-base-subject)(uid =)(cn =))定义VLV索引,则用(uid = a)搜索将与索引不匹配,从而不能使用。
服务器端排序是一个非常昂贵的请求,这就是为什么当没有索引时,服务器将拒绝对许多条目进行排序(由index-entry-limit控制)。虽然可以增加此限制,但这会对服务器中使用的资源量产生非常严重的影响,并可能严重影响服务器的性能。