9.8. 管理缓存设置


目录服务器使用以下缓存:

  • 条目缓存,其中包含单个目录条目。
  • 可区分名称(DN)缓存用于将 DN 和相对可分辨名称(RDN)与条目相关联。
  • 数据库缓存,其中包含数据库索引文件 3.0. db 文件。

为了提高性能,所有缓存大小都必须能够存储其所有记录。如果不使用推荐的自动大小功能,且没有足够可用的 RAM,请按前面显示的顺序将可用内存分配给缓存。

默认情况下,目录服务器使用自动大小功能来优化在实例启动时在服务器的硬件资源和条目缓存的大小。

重要

红帽建议使用自动大小功能,而不是手动设置缓存大小。

cn=config,cn=ldbm database,cn=plugins,cn=config 条目中的以下参数控制自动大小:

nsslapd-cache-autosize

这些设置控制是否为数据库和条目缓存启用自动大小。启用自动大小:

  • 对于数据库和条目缓存,如果 nsslapd-cache-autosize 参数设置为大于 0 的值。
  • 对于数据库缓存,如果 nsslapd-cache-autosizensslapd-dbcachesize 参数设置为 0。
  • 对于条目缓存,如果 nsslapd-cache-autosizensslapd-cachememsize 参数设置为 0。
nsslapd-cache-autosize-split
  • 该值设定目录服务器用于数据库缓存的 RAM 百分比。服务器对条目缓存使用其余百分比。
  • 将 1.5 GB RAM 用于数据库缓存不会提高性能。因此,目录服务器将数据库缓存限制为 1.5 GB。

默认情况下,Directory 服务器使用以下默认值:

  • nsslapd-cache-autosize: 25
  • nsslapd-cache-autosize-split: 25
  • nsslapd-dbcachesize: 1,536 MB

使用这些设置时,使用系统可用 RAM 的 25%(nsslapd-cache-autosize)。从此内存中,服务器将 25% 用于数据库缓存(nsslapd-cache-autosize-split),剩余的 75% 用于条目缓存。

根据可用 RAM,这会产生以下缓存大小:

Expand
表 9.1. 如果 nsslapd-cache-autosize 和 nsslapd-cache-autosize-split 使用其默认值,则缓存大小
GB 的可用 RAM数据库缓存大小条目缓存大小

1 GB

64 MB

192 MB

2 GB

128 MB

384 MB

4 GB

256 MB

768 MB

8 GB

512 MB

1,536 MB

16 GB

1,024 MB

3,072 MB

32 GB

1,536 MB

6,656 MB

64 GB

1,536 MB

14,848 MB

128 GB

1,536 MB

31,232 MB

9.8.2. 所需的缓存大小

dsconf monitor dbmon 命令可让您在运行时监控缓存统计信息。要显示统计信息,请输入:

# dsconf <instance_name> monitor dbmon

DB Monitor Report: 2022-02-24 10:25:16
--------------------------------------------------------
Database Cache:
 - Cache Hit Ratio:     50%
 - Free Space:          397.31 KB
 - Free Percentage:     2.2%
 - RO Page Drops:       0
 - Pages In:            2934772
 - Pages Out:           219075

Normalized DN Cache:
 - Cache Hit Ratio:     60%
 - Free Space:          19.98 MB
 - Free Percentage:     99.9%
 - DN Count:            100000
 - Evictions:           9282348

Backends:
  - dc=example,dc=com (userroot):
    - Entry Cache Hit Ratio:        66%
    - Entry Cache Count:            50000
    - Entry Cache Free Space:       2.0 KB
    - Entry Cache Free Percentage:  0.8%
    - Entry Cache Average Size:     8.9 KB
    - DN Cache Hit Ratio:           21%
    - DN Cache Count:               100000
    - DN Cache Free Space:          4.29 MB
    - DN Cache Free Percentage:     69.8%
    - DN Cache Average Size:        130.0 B
Copy to Clipboard Toggle word wrap

(可选)将 -b back_end or -x 选项传给命令,以显示特定后端或索引的统计信息。

如果您的缓存足够大小,则 DN Cache Count 中的数字与 Cache Count 后端条目中的值匹配。另外,如果所有条目和 DN 都位于其各自缓存中,则 Entry Cache Count count 值与 DN Cache Count 值匹配。

示例输出显示:

  • 只有 2.2% 可用数据库缓存保留:

    Database Cache:
     ...
     - Free Space:          397.31 KB
     - Free Percentage:     2.2%
    Copy to Clipboard Toggle word wrap

    但是,为了高效操作,至少需要 15% 的可用数据库缓存。要确定数据库缓存的最佳大小,请计算 /var/lib/dirsrv/slapd- <instance_name> /db/ 目录(包括子目录和更改日志数据库)中所有以前db 文件大小,并为开销添加 12%。

    要设置数据库缓存,请参阅 使用命令行设置数据库缓存大小

  • userroot 数据库的 DN 缓存很好选择:

    Backends:
      - dc=example,dc=com (userroot):
        ...
        - DN Cache Count:               100000
        - DN Cache Free Space:          4.29 MB
        - DN Cache Free Percentage:     69.8%
        - DN Cache Average Size:        130.0 B
    Copy to Clipboard Toggle word wrap

    数据库的 DN 缓存包含 100000 记录、69.% 的缓存可用,并且内存中的每个 DN 都需要 130 字节。

    要设置 DN 缓存,请参阅 使用命令行设置 DN 缓存大小

  • userroot 数据库的条目缓存的统计信息表示应提高条目缓存值以提高性能:

    Backends:
      - dc=example,dc=com (userroot):
      ...
        - Entry Cache Count:            50000
        - Entry Cache Free Space:       2.0 KB
        - Entry Cache Free Percentage:  0.8%
        - Entry Cache Average Size:     8.9 KB
    Copy to Clipboard Toggle word wrap

    条目缓存包含在这个数据库 50000 记录中,只保留 2 Kilobytes 的可用空间。要启用目录服务器缓存所有 100000 DN,缓存必须至少增加到 890 MB (100000 DNs * 8,9 KB average entry size)。但是,红帽建议将最低大小舍入到下一个最高 GB,并加倍结果。在本例中,条目缓存应设置为 2 Gigabytes。

    要设置条目缓存,请参阅 使用命令行设置条目缓存大小

9.8.3. 使用命令行设置数据库缓存大小

数据库缓存包含数据库的 Berkeley 数据库索引文件,这意味着用于数据库属性索引的所有 5.2. db 和其他文件。这个值被传递给 Berkeley DB API 功能 set_cachesize ()。这个缓存大小对 Directory 服务器性能的影响低于条目缓存大小,但如果设置条目缓存大小后有可用的 RAM,请增加分配给数据库缓存的内存量。

流程

  1. 禁用自动缓存调整

    # dsconf <instance_name> backend config set --cache-autosize=0
    Copy to Clipboard Toggle word wrap
  2. 手动设置数据库缓存大小:

    # dsconf <instance_name> backend config set --dbcachesize=268435456
    Copy to Clipboard Toggle word wrap

    以字节为单位指定数据库缓存大小。在本例中,命令会将数据库缓存设置为 256 MB。

  3. 重启实例:

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

9.8.4. 使用 Web 控制台设置数据库缓存大小

数据库缓存包含数据库的 Berkeley 数据库索引文件,这意味着用于数据库属性索引的所有 5.2. db 和其他文件。这个值被传递给 Berkeley DB API 功能 set_cachesize ()。这个缓存大小对 Directory 服务器性能的影响低于条目缓存大小,但如果设置条目缓存大小后有可用的 RAM,请增加分配给数据库缓存的内存量。

先决条件

  • 在 web 控制台中登录到实例。

流程

  1. 导航到 Database Global Database Configuration
  2. 取消选择 Automatic Cache Tuning
  3. 单击 Save Config
  4. Database Cache Size 字段中输入数据库缓存大小(以字节为单位),如 268435456
  5. 单击 Save Config
  6. 点右上角的 Actions,然后选择 Restart Instance

9.8.5. 使用命令行设置 DN 缓存大小

目录服务器使用 entryrdn 索引将可分辨名称(DN)和相对可分辨名称(RDN)与条目关联。它使服务器能够高效地重命名子树、移动条目和执行 moddn 操作。服务器使用 DN 缓存来缓存 entryrdn 索引的内存中表示,以避免昂贵的文件 I/O 和转换操作。

如果不使用自动调整功能,为获得最佳性能,尤其是在重命名条目和移动操作的情况下,请将 DN 缓存设置为可让目录服务器缓存数据库中的所有 DN 的大小。

如果 DN 没有存储在缓存中,Directory 服务器会从 entryrdn.db 索引数据库文件读取 DN,并将 DN 从磁盘上的格式转换为内存中格式。存储在缓存中的 DNS 可让服务器跳过磁盘 I/O 和转换步骤。

流程

  1. 显示后缀及其对应的后端:

    # dsconf <instance_name> backend suffix list
    dc=example,dc=com (userroot)
    Copy to Clipboard Toggle word wrap

    这个命令显示每个后缀旁的后端数据库名称。在下一步中需要后缀的数据库名称。

  2. 设置 DN 缓存大小:

    # dsconf <instance_name> backend suffix set --dncache-memsize=20971520 userRoot
    Copy to Clipboard Toggle word wrap

    此命令将 userRoot 数据库的 DN 缓存设置为 20MB。

  3. 重启实例:

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

9.8.6. 使用 Web 控制台设置 DN 缓存大小

目录服务器使用 entryrdn 索引将可分辨名称(DN)和相对可分辨名称(RDN)与条目关联。它使服务器能够高效地重命名子树、移动条目和执行 moddn 操作。服务器使用 DN 缓存来缓存 entryrdn 索引的内存中表示,以避免昂贵的文件 I/O 和转换操作。

如果不使用自动调整功能,为获得最佳性能,尤其是在重命名条目和移动操作的情况下,请将 DN 缓存设置为可让目录服务器缓存数据库中的所有 DN 的大小。

如果 DN 没有存储在缓存中,Directory 服务器会从 entryrdn.db 索引数据库文件读取 DN,并将 DN 从磁盘上的格式转换为内存中格式。存储在缓存中的 DNS 可让服务器跳过磁盘 I/O 和转换步骤。

先决条件

  • 在 web 控制台中登录到实例。

流程

  1. 导航到 Database Suffixes suffix_name
  2. DN Cache Size 字段中输入 DN 缓存大小(以字节为单位)。
  3. 单击 Save Configuration
  4. 点右上角的 Actions,然后选择 Restart Instance

9.8.7. 使用命令行设置条目缓存大小

目录服务器使用条目缓存来存储搜索和读取操作期间使用的目录条目。将条目缓存设置为可让 Directory 服务器存储所有记录的大小,对搜索操作具有最高的性能影响。

如果没有配置条目缓存,Directory 服务器会从 id2entry.db 数据库文件读取条目,并将可区别的名称(DN)从磁盘上的格式转换为内存中格式。存储在缓存中的条目可让服务器跳过磁盘 I/O 和转换步骤。

流程

  1. 禁用自动缓存调整:

    # dsconf <instance_name> backend config set --cache-autosize=0
    Successfully updated database configuration
    Copy to Clipboard Toggle word wrap
  2. 显示后缀及其对应的后端:

    # dsconf <instance_name> backend suffix list
    dc=example,dc=com (userroot)
    Copy to Clipboard Toggle word wrap

    这个命令显示每个后缀旁的后端数据库名称。在下一步中需要后缀的数据库名称。

  3. 为数据库设置条目缓存大小(以字节为单位):

    # dsconf <instance_name> backend suffix set --cache-memsize=2147483648 userRoot
    Copy to Clipboard Toggle word wrap

    此命令将 userRoot 数据库的条目缓存设置为 2GB。

  4. 重启实例:

    # dsctl <instance_name> restart
    Copy to Clipboard Toggle word wrap

9.8.8. 使用 Web 控制台设置条目缓存大小

目录服务器使用条目缓存来存储搜索和读取操作期间使用的目录条目。将条目缓存设置为可让 Directory 服务器存储所有记录的大小,对搜索操作具有最高的性能影响。

如果没有配置条目缓存,Directory 服务器会从 id2entry.db 数据库文件读取条目,并将可区别的名称(DN)从磁盘上的格式转换为内存中格式。存储在缓存中的条目可让服务器跳过磁盘 I/O 和转换步骤。

先决条件

  • 在 web 控制台中登录到实例。

流程

  1. 导航到 Database Suffixes suffix_name Settings
  2. 禁用自动 缓存调优设置
  3. 单击 Save Configuration
  4. 点右上角的 Actions,然后选择 Restart Instance
  5. 导航到 Database Suffixes suffix_name Settings
  6. Entry Cache Size 字段中设置 数据库缓存的大小。
  7. 单击 Save Configuration
  8. 点右上角的 Actions,然后选择 Restart Instance
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat