Sun Java System Directory Server Enterprise Edition 6.1 管理指南

第 3 章 目录服务器配置

本章介绍如何配置目录服务器。您可以使用 dsconf 命令(请参见 dsconf(1M) 手册页)。

还可以使用目录服务控制中心 (Directory Service Control Center, DSCC),此为首选方法。DSCC 将在配置过程中执行附加检查,这可以减少错误。此外,DSCC 还允许您将一个服务器实例的配置复制到另一个服务器实例中。有关使用 DSCC 的详细信息,请参见 DSCC 联机帮助。

显示目录服务器实例配置

要显示目录服务器实例配置,请运行 dsconf info


$ dsconf info -h host -p port
Instance path   :  instance path
Global State    :  read-write
Host Name       :  host
Port            :  port
Secure port     :  secure port
Total entries   :  20844

Suffixes        :  suffix-DN

Dest. Servers   :  host:port

On-Going Tasks  :  import
Finished Tasks  :  backup

以上输出假定您已创建了后缀以及与目标服务器之间的复制协议。它还显示正在执行的导入操作以及完成的备份操作。

使用 DSCC 修改配置

修改配置的推荐方法是使用 DSCC。此浏览器界面提供了基于任务的控件,可帮助您快速有效地设置配置。使用 DSCC 可以修改一个服务器上的配置设置,然后将该配置设置复制到其他服务器中。此外,DSCC 界面还为您管理配置的复杂性和相互依赖性。可以在 DSCC 联机帮助中找到使用 DSCC 修改配置的详细过程。

从命令行修改配置

可以通过编写使用命令行工具的脚本来自动完成配置任务。

可以通过命令行使用 dsconf 命令来修改配置。此命令使用 LDAP 修改 cn=config 子树。有关 dsconf 的详细信息,请参见目录服务器命令行工具

对于无法使用 dsconf 执行的任何任务,都可以使用 ldapmodify 命令。


注 –

如果要使用 dsconf set-server-prop 命令修改服务器配置属性,您需要了解可以修改的属性以及这些属性的默认值。可使用以下命令显示所有属性的帮助信息:


$ dsconf help-properties -v

可以搜索所需项的属性帮助。例如,在 UNIX 平台上,可键入以下内容来搜索内存缓存属性:


$ dsconf help-properties -v | grep cache

有关 cn=config 中配置条目的详细信息,以及所有配置条目和属性(包括允许值的范围)的完整描述,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》

修改 dse.ldif 文件

目录服务器将所有配置信息存储在以下文件中:

instance-path/config/dse.ldif


注意 – 注意 –

通过直接编辑 dse.ldif 文件的内容来修改配置很容易出错,因此不推荐使用此方法。但是,如果选择手动编辑此文件,请在编辑文件之前停止服务器,并在完成编辑后重新启动该服务器。


dse.ldif 文件使用 LDAP 数据交换格式 (LDAP Data Interchange Format, LDIF)。LDIF 是条目、属性及属性值的文本表示,并且是 RFC 2849 (http://www.ietf.org/rfc/rfc2849 ) 中所述的标准格式。

dse.ldif 文件中的目录服务器配置由以下内容组成:

配置管理用户

目录服务器包含默认的管理用户,即目录管理员和 cn=admin,cn=Administrators,cn=config 用户。这两个用户具有相同的访问权限,但 cn=admin,cn=Administrators,cn=config 受 ACI 控制。

本部分说明如何创建具有超级用户权限的管理用户,以及如何配置目录管理员。

Procedure创建具有超级用户权限的管理用户

如果要创建与 cn=admin,cn=Administrators,cn=config 具有相同权限的新管理用户,请在 cn=Administrators,cn=config 组中创建新用户。此组中的所有用户都受全局 ACI 控制,此 ACI 允许具有与目录管理员相同的访问权限。

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 创建新的管理用户。

    例如,要创建新用户 cn=Admin24,cn=Administrators,cn=config,请键入:


    $ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    dn: cn=admin24,cn=Administrators,cn=config
    changetype: add
    objectclass: top
    objectclass: person
    userPassword: password
    description: Administration user with the same access rights as Directory Manager.

    -D-w 选项分别提供具有此条目创建权限的用户的绑定 DN 和密码。

Procedure配置目录管理员

目录管理员是具有特权的服务器管理员,与 UNIX 系统上的 root 用户类似。访问控制不适用于目录管理员。

大多数管理任务都不需要使用目录管理员。您可以使用 cn=admin,cn=Administrators,cn=config 用户或者在 cn=Administrators,cn=config 下创建的任何其他用户。需要使用目录管理员的任务只包括更改根 ACI 和复制故障排除任务(如修复复制和搜索逻辑删除)。

可以更改目录管理员的 DN 和密码,以及创建可供自动读取密码的文件。

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 查找现有的目录管理员 DN。


    $ dsconf get-server-prop -h host -p port root-dn
    root-dn:cn=Directory Manager
  2. 根据需要修改目录管理员设置。

    • 要修改目录管理员 DN,请键入:


      $ dsconf set-server-prop -h host -p port root-pwd-file:new-root-dn-password-file
      

      如果目录管理员 DN 中存在空格,请使用引号。例如:


      $ dsconf set-server-prop -h host1 -p 1389 root-dn:"cn=New Directory Manager"
    • 要更改目录管理员密码,请键入:


      $ dsconf set-server-prop -h host -p port root-pwd:new-root-dn-password
      

      如果出于安全考虑,您不希望将明文密码作为命令行参数进行传递,可创建一个用于设置密码的临时文件。


      $ echo password > /tmp/pwd.txt

      此文件只读取一次,并存储密码以供将来使用。请设置服务器根密码文件属性。


      $ dsconf set-server-prop -h host -p port root-pwd-file:/tmp/pwd.txt

      此命令将提示服务器读取密码文件。请在设置密码文件属性之后删除临时密码文件。


      $ rm /tmp/pwd.txt

保护配置信息

根目录服务器条目(使用零长度 DN "" 执行基本对象搜索时返回的条目)以及 cn=configcn=monitorcn=schema 下的子树包含由目录服务器自动生成的访问控制指令 (Access Control Instruction, ACI)。这些 ACI 用于确定目录条目的用户权限。如果用于评估目的,则这些 ACI 已经足够。但是对于任何生产部署,您都需要评估访问控制要求并设计您自己的访问控制。

如果出于安全考虑,您要隐藏一个或多个其他子树并保护您的配置信息,则必须在 DIT 上放置其他 ACI 。

有关创建 ACI 的详细信息,请参见第 6 章,目录服务器访问控制

配置 DSCC

本部分提供了以下有关配置 DSCC 的信息:

Procedure更改 Common Agent Container 端口号

默认的 Common Agent Container 端口号为 11162。Common Agent Container 将 DSCC 代理端口定义为 jmxmp-connector-port。如果出于管理考虑,需要为 DSCC 代理和 Common Agent Container 使用其他端口号,请使用以下过程:

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 以超级用户身份验证 jmxmp-connector-port 的现有端口号。


    $ su 
    Password: 
    # cacaoadm list-params
    ...
    jmxmp-connector-port=11162
    ...
  2. 更改 DSCC 代理端口号。

    更改 DSCC 代理端口号时,必须停止 Common Agent Container。


    # cacaoadm stop
    # cacaoadm set-param jmxmp-connector-port=new-port
    # cacaoadm start

    有关此命令的位置,请参见命令位置

  3. 在 DSCC 中,取消注册您的服务器,然后使用新的 DSCC 代理端口号重新注册这些服务器。

    此外,在创建新服务器时,还必须指定非默认的 DSCC 代理端口号。

Procedure重置目录服务管理员密码

要重置目录服务管理员密码,请使用 DSCC,如以下过程所述。

  1. 访问 DSCC,如访问 DSCC中所述。

  2. 单击“设置”选项卡,然后选择“目录服务管理员”。

  3. 单击要更改密码的目录服务管理员的名称。

  4. 在属性屏幕中输入新密码。

    在“确认密码”字段中再次键入新密码以进行确认。单击“确定”保存所做的更改。

Procedure延长 DSCC 会话自动超时延迟

经过一段时间之后,您的 DSCC 会话将会超时,并且您将从 DSCC 中注销。请使用以下过程延长超时延迟。请注意,此过程将延长 DSCC 及 Sun Java Web Console 中所有其他应用程序的超时时间。

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。

  1. 以超级用户身份延长超时延迟。


    # wcadmin add -p -a ROOT session.timeout.value=mm
    

    其中 mm 是超时之前时间(以分钟为单位)。

    例如,要将超时时间设置为两小时,请键入:


    $ su
    Password:
    # wcadmin add -p -a ROOT session.timeout.value=120
    Set 1 properties for the ROOT application.
    # wcadmin list -p
    Shared service properties (name, value):
        session.timeout.value  120
        ...
  2. 重新启动 Sun Java Web Console。


    # smcwebserver restart
    Shutting down Sun Java(TM) Web Console Version 3.0.2 ...
    Starting Sun Java(TM) Web Console Version 3.0.2 ...
    The console is running.

    有关这些命令的位置,请参见命令位置

配置 DSCC 的故障转移

DSCC 会显示已在 DSCC 中注册的服务器。

如果安装有 DSCC 的计算机出现故障,您可以在其他计算机上安装 DSCC,然后重新注册您的服务器。但这么做可能会花费很多时间。如果要通过 DSCC 立即访问服务器,则可以配置 DSCC 故障转移。

要配置 DSCC 故障转移,请考虑以下注意事项:

DSCC 故障排除

有关 DSCC 故障排除的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Installation Guide》中的“To Troubleshoot Directory Service Control Center Access”

更改目录服务器端口号

可以使用 DSCC 或 dsconf set-server-prop 命令修改用户目录服务器的 LDAP 端口号或 LDAPS 安全端口号。

如果更改端口号,请注意以下事项:

如果使用命令行更改端口号,请注意以下事项:

Procedure修改端口号、启用端口和禁用端口

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。


注 –

在进行修改后,您必须重新启动服务器以使更改生效。


  1. 验证端口的现有设置。


    $ dsconf get-server-prop -h host -p port port-type
    

    其中 port-type 为以下任一选项:

    ldap-port

    LDAP 默认端口

    ldap-secure-port

    LDAPS 安全端口

    dsml-port

    DSML 默认端口

    dsml-secure-port

    DSML 安全端口

    例如,要显示 LDAPS 安全端口,请键入:


    $ dsconf get-server-prop -h host1 -p 2501 ldap-secure-port
    Enter "cn=Directory Manager" password:
    ldap-secure-port : 2511

    如果返回结果为整数,则端口处于启用状态。如果返回结果为 disabled,则端口处于禁用状态。


    注 –

    还可以使用 dsadm 列出 LDAP 默认端口和 LDAPS 安全端口


  2. 修改端口号或启用端口(如果需要)。


    $ dsconf set-server-prop -h host -p port port-type:new-port
    

    例如,要将 LDAP 端口号从 1389 更改为 1390,请使用以下命令:


    $ dsconf set-server-prop -h host1 -p 1389 ldap-port:1390

    要在端口号 2250 上启用 DSML 安全端口,请使用以下命令:


    $ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:2250
  3. 禁用端口(如果需要)。


    $ dsconf set-server-prop -h host -p port port-type:disabled

    例如,要禁用 DSML 安全端口,请使用以下命令:


    $ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:disabled

配置 DSML

除了处理通过轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 发送的请求之外,目录服务器还响应以目录服务标记语言版本 2 (Directory Service Markup Language version 2, DSMLv2) 发送的请求。DSML 是供客户端对目录操作进行编码的另一种方法。服务器将使用所有相同的访问控制和安全功能,以处理任何其他请求的方式来处理 DSML 请求。DSML 处理允许许多其他类型的客户端访问您的目录内容。

目录服务器支持通过超文本传输协议 (Hypertext Transfer Protocol, HTTP/1.1) 使用 DSMLv2,并将简单对象访问协议 (Simple Object Access Protocol, SOAP) 版本 1.1 用作编程协议来传输 DSML 内容。有关这些协议的详细信息以及 DSML 请求的示例,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》中的第 10  章 “Directory Server DSMLv2”

本部分包含以下主题:

Procedure启用 DSML-over-HTTP 服务

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将 DSML 模式设置为 on


    $ dsconf set-server-prop -h host -p port dsml-enabled:on
  2. 设置安全 DSML 端口。


    $ dsconf set-server-prop -h host -p port dsml-secure-port:port
    
  3. 设置非安全 DSML 端口。


    $ dsconf set-server-prop -h host -p port dsml-port:port
    

    默认情况下,此端口设置为 disabled

  4. 重新启动服务器。


    $ dsadm restart instance-path
    
接下来的操作

根据定义的参数和属性值,DSML 客户端可以使用以下 URL 将请求发送到此服务器:

http://host:DSML-port/ relative-URL

https://host:secure-DSML-port /relative-URL


注 –

可以使用 dsml-relative-root-url 属性来读取和设置 relative-URL


Procedure禁用 DSML-over-HTTP 服务

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 将 DSML 模式设置为 off


    $ dsconf set-server-prop -h host -p port dsml-enabled:off
  2. 将安全 DSML 端口设置为 disabled


    $ dsconf set-server-prop -h host -p port dsml-secure-port:disabled
  3. 重新启动服务器。


    $ dsasm restart instance-path
    

Procedure配置 DSML 安全性

可以配置接受 DSML 请求时所需的安全级别。要执行此操作,必须配置 DSML 客户端验证。

  1. 设置 DSML 客户端验证模式。


    $ dsconf set-server-prop -h host -p port dsml-client-auth-mode:dsml-mode
    

    默认情况下,dsml-client-auth-mode 属性设置为 client-cert-first

    dsml-mode 可为以下任一选项:

    • http-basic-only - 此为默认值。服务器使用 HTTP“授权”头的内容来查找可以映射到目录中某个条目的用户名。此过程及其配置都通过 SSL 进行了加密,但不使用客户端证书。相关内容如DSML 标识映射中所述。

    • client-cert-only - 服务器使用客户端证书中的凭证来识别客户端。使用此值时,所有 DSML 客户端都必须使用安全 HTTPS 端口发送 DSML 请求并提供证书。服务器会检查客户端证书是否与目录中的条目相匹配。有关详细信息,请参见第 5 章,目录服务器安全性

    • client-cert-first - 服务器首先尝试使用客户端证书(如果提供)来验证客户端。如果未提供证书,服务器将使用“授权”头的内容来验证客户端。

    如果 HTTP 请求中既未提供证书又未提供“授权”头,服务器将使用匿名绑定执行 DSML 请求。匿名绑定还将用于以下情形:

    • 指定 client-cert-only 时,客户端提供了有效的“授权”头但未提供证书。

    • 指定 http-basic-only 时,客户端提供了有效证书但未提供“授权”头。

    无论使用哪种客户端验证方法,如果提供证书但该证书与条目不匹配,或者指定 HTTP“授权”头但无法将其映射到用户条目,则 DSML 请求都将被拒绝,并显示错误消息 403:“禁止”。

DSML 标识映射

执行无证书的基本验证时,目录服务器将使用标识映射机制来确定接受 DSML 请求时要使用的绑定 DN。此机制将从 HTTP 请求的“授权”头中提取信息,以确定要用于绑定的标识。

DSML/HTTP 的默认标识映射由服务器配置中的以下条目指定。

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people
dsSearchFilter: (uid=${Authorization})

此配置表明,服务器应该使用 HTTP 用户 ID 作为目录服务器后缀中所存储的 DN 的 uid 值。例如,如果 HTTP 用户为 bjensen,服务器将尝试使用 DN uid=bjensen,ou=people 执行绑定。

因此,要使映射正常工作,您必须完成 dsSearchBaseDN 的值。例如,可以将 dsSearchBaseDN 的值更改为 ou=people,dc=example,dc=com。这样,如果 HTTP 用户为 bjensen,服务器将尝试使用 DN uid=bjensen,ou=people,dc=example,dc=com 执行绑定。

dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
cn: default
dsSearchBaseDN: ou=people,dc=example,dc=com
dsSearchFilter: (uid=${Authorization})

在映射条目属性 dsSearchFilter 中,可以使用 ${header } 格式的占位符,其中 header 是 HTTP 头的名称。

以下是 DSML 映射中最常用的头。

${Authorization}

此字符串将由 HTTP“授权”头中包含的用户名替换。“授权”头同时包含用户名及其密码,但在此占位符中只替换用户名。

${From}

此字符串将由 HTTP“发件人”头中可能包含的电子邮件地址替换。

${host}

此字符串将由 DSML 请求 URL 中的主机名和端口号(即服务器的主机名和端口号)替换。

要使 DSML 请求执行其他类型的标识映射,请为 HTTP 头定义新的标识映射。

Procedure为 HTTP 头定义新的标识映射

  1. 编辑默认的 DSML-over-HTTP 标识映射,或为此协议创建自定义映射。

    映射条目必须位于 cn=HTTP-BASIC,cn=identity mapping,cn=config 条目下。

    可以从命令行中使用 ldapmodify 命令添加此条目,如使用 ldapmodify 添加条目中所述。

  2. 重新启动目录服务器以使新映射生效。

    将首先评估自定义映射。如果没有成功的自定义映射,则评估默认映射。如果所有映射都无法确定 DSML 请求的绑定 DN,将禁止并拒绝该 DSML 请求(错误 403)。

将服务器设置为只读

目录中的每个后缀均可单独设为只读模式,并可返回特定的引用(如果已定义)。目录服务器也为应用于所有后缀并可返回全局引用(如果已定义)的服务器提供了只读模式。

服务器只读模式旨在允许管理员在执行特定任务(如为后缀重新编制索引)时阻止对目录内容执行修改操作。因此,服务器只读模式不适用于以下配置分支:

无论只读设置如何,都应始终使用访问控制指令 (Access Control Instruction, ACI) 保护这些分支,以防止非管理用户对其进行修改(请参见第 6 章,目录服务器访问控制)。全局只读模式可阻止对目录中的所有其他后缀执行更新操作,包括目录管理员发起的更新操作。

启用只读模式后,还会中断后缀上的复制操作。主副本不再有任何要复制的更改,但它还会继续复制启用只读模式前所做的全部更改。在禁用只读模式之前,使用方副本不会收到更新。多主复制环境中的主服务器没有任何要复制的更改,并且无法从其他主服务器接收更新。

Procedure启用或禁用服务器只读模式

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 启用全局只读模式。


    $ dsconf set-server-prop -h host -p port read-write-mode:read-only
  2. 准备就绪后,禁用只读模式。


    $ dsconf set-server-prop -h host -p port read-write-mode:read-write

配置内存

本部分提供有关管理不同类型内存的信息。有关不同缓存类型的描述以及缓存调整的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》中的第 5  章 “Directory Server Data Caching”

填充缓存

填充缓存是指将数据填入缓存中,以使后续的目录服务器行为能反映出正常的操作性能,而不是提升的性能。如果希望在执行基准测试时获得可再现的结果,或者要测量和分析潜在的优化,则填充缓存非常有用。

请尽量避免主动填充缓存。在测量性能之前,让客户端与目录服务器之间的一般或典型交互操作来填充缓存。

可以在 http://www.slamd.com 找到用于填充数据库缓存的工具。

Procedure修改数据库缓存


注意 – 注意 –

修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。


您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 获取当前的数据库缓存级别。


    $ dsconf get-server-prop -h host -p port db-cache-size
  2. 更改数据库缓存级别。


    $ dsconf set-server-prop -h host -p port db-cache-size:size
    

    其中,size 可以用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示。您的计算机必须支持所指定的大小。

Procedure监视数据库缓存

安装时的默认缓存级别适合于测试环境,而不适用于生产环境。进行调整时,您可能需要监视服务器的数据库缓存。

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 监视数据库缓存。


    $ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \
     -b "cn=monitor,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)"

    如果数据库缓存足够大,并且已进行了填充,则命中率 (dbcachehitratio) 应该很高。此外,读入的页面数 (dbcachepagein) 和写出的干净页面数 (dbcacheroevict) 应该很低。此处的“高”和“低”是相对于部署限制而言的。

Procedure监视条目缓存

进行调整时,您可能需要检查一个或多个后缀的条目缓存。可使用以下过程查看条目缓存级别。

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 监视条目缓存。


    $ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \
     -b "cn=monitor,cn=db-name,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)"

    如果后缀的条目缓存足够大(可以容纳该后缀中的大多数条目),并且已经填充了缓存,则命中率 (entrycachehitratio ) 应该很高。

    如果已经填充了缓存,您将会看到,当先前为空的条目缓存被填满时,条目缓存大小 (currententrycachesize) 将接近于最大条目缓存大小 (maxentrycachesize)。理想情况下,条目的数量 (currententrycachecount) 应该等于或非常接近于后缀中的条目总数 (ldapentrycachecount)。

Procedure修改条目缓存


注意 – 注意 –

修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。


您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 获取当前的条目缓存级别。


    $ dsconf get-suffix-prop -h host -p port suffix-DN entry-cache-count entry-cache-size
  2. 更改条目缓存计数。


    $ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-count:integer
    

    其中,integer 是要在缓存中存储的条目数。

  3. 更改条目缓存大小。


    $ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-size:size
    

    其中,size 是用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的缓存大小。您的计算机必须支持所指定的大小。

Procedure配置堆内存阈值

如果要限制 nsslapd 进程所使用的堆内存量,可以设置动态内存占用的阈值。当目录服务器在资源共享或资源稀少的计算机上运行时,可能需要设置此阈值。


注 –

只能在 SolarisTM 和 Linux 平台上设置此阈值。


有关调整内存大小的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Deployment Planning Guide》中的“Directory Server and Memory”

无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。


注 –

默认情况下,heap-high-threshold-sizeheap-low-threshold-size 属性是 undefined


  1. 设置堆内存高端阈值的最大值。


    $ dsconf set-server-prop -h host -p port heap-high-threshold-size:value
    

    其中,valueundefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。

    有关用于 heap-high-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。

  2. 设置堆内存低端阈值的最大值(可选)。


    $ dsconf set-server-prop -h host -p port heap-low-threshold-size:value
    

    其中,valueundefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。

    有关用于 heap-low-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。

为每个客户端帐户设置资源限制

可以在服务器上控制每个客户端帐户的搜索操作资源限制。可以在帐户的操作属性中设置这些限制,然后目录服务器会基于客户端用于绑定到目录的帐户来实施这些限制。

可以设置以下限制:


注 –

默认情况下,目录管理员使用资源时可以不受限制。


在特定用户帐户上设置的资源限制优先于在服务器范围的配置中设置的资源限制。本部分提供了有关为每个帐户设置资源限制的信息。

本部分中提供的示例直接在条目的属性中设置资源限制。还可以使用服务类 (Class of Service, CoS) 机制设置帐户的资源限制。为客户端应用程序检索条目时,CoS 机制将生成计算后的属性。有关定义 CoS 的详细信息,请参见服务类

Procedure配置堆内存阈值

您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。

  1. 使用 dsconf get-server-prop 命令读取资源限制服务器属性。


    $ dsconf get-server-prop -h host -p port look-through-limit search-size-limit \
     search-time-limit idle-timeout
    look-through-limit  :  5000  
    search-size-limit   :  2000  
    search-time-limit   :  3600
    idle-timeout        :  none

    从上述输出可以看出,搜索操作最多可浏览 5000 个条目,最多可返回 2000 个条目,并且最多可使用一小时(3600 秒)的服务器时间来处理搜索。

  2. 更改浏览限制。


    $ dsconf set-server-prop -h host -p port look-through-limit:integer
    

    其中,integer 是为搜索操作检查的最大条目数。

  3. 更改搜索大小限制。


    $ dsconf set-server-prop -h host -p port search-size-limit:integer
    

    其中,integer 是搜索操作返回的最大条目数。

  4. 更改搜索时间限制。


    $ dsconf set-server-prop -h host -p port serach-time-limit:integer
    

    其中,integer 是处理搜索操作所花的最长时间。

  5. 更改空闲超时。


    $ dsconf set-server-prop -h host -p port idle-timeout:integer
    

    其中,integer 是在断开连接之前客户端连接可以保持空闲状态的最长时间。