【问题标题】:OpenDJ vlv index error: # Server-side sort failed: Unwilling to PerformOpenDJ vlv index error: # Server-side sort failed: Unwilling to Perform
【发布时间】:2016-09-19 15:24:11
【问题描述】:

我使用的是 OpenDJ 3.0.0 发行版。

我有两个基础 dns,第一个是 dc=tenant1,第二个是 dc=tenant2,我创建的 vlv 索引是基于 dc=tenant1,但是 ldap 搜索发生在 dc=tenant2

这是 vlv 索引,看起来像 筛选: (&(objectClass=ns-nationsky-base-subject)(uid=)(cn=))

基础 dn:dc=tenant1 排序顺序:uid cn mail 范围:一级

当我尝试将 ldapsearch 与 vlv 控件一起使用时,将出现“# Server-side sort failed: Unwilling to Perform”,如下所示:

/ldapsearch -p 1389 -h localhost -D 'cn=Directory Manager' -w 'password' -b 'ou=People,ou=Subjects,dc=tenant2' -G 0:2000:1:0 -s one --sortorder uid "(uid=a)" cn

一切正常,但如果我的服务器中有太多条目,它总是会出现“# Server-side sort failed: Unwilling to Perform”的错误。(比如 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

知道如何解决它吗?

【问题讨论】:

    标签: opendj


    【解决方案1】:

    VLV 索引和查询实际上是为了浏览一组众所周知的条目(就像所有用户一样),而不是不同的条目集。

    因此,为了使用 VLV 索引,搜索请求必须匹配为该索引定义的基数、范围、过滤器和排序顺序(并且过滤器应该是常量)。

    如果 VLV 索引是使用 (&(objectClass=ns-nationsky-base-subject)(uid=)(cn=)) 定义的,那么使用 (uid=a) 的搜索将不匹配索引,因此无法使用。

    服务器端排序是一个非常昂贵的请求,这就是为什么当没有索引时,服务器会拒绝对许多条目进行排序(受 index-entry-limit 的约束)。虽然可以增加此限制,但这会对服务器中使用的资源量产生非常严重的影响,并可能严重影响服务器的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2017-08-02
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多