性能调节身份管理
调整身份管理服务以便在 Red Hat Enterprise Linux 8 中提高性能
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息。
在身份管理中,计划中的术语变化包括:
- 使用 block list 替换 blacklist
- 使用 allow list 替换 whitelist
- 使用 secondary 替换 slave
根据上下文,master 词语将被替换为更精确的语言:
- 使用 IdM server 替换 IdM master
- 使用 CA renewal server 替换 CA renewal master
- 使用 CRL publisher server 替换 CRL master
- 使用 multi-supplier 替换 multi-master
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。要做到这一点:
关于特定内容的简单评论:
- 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点在高亮文本上弹出的 Add Feedback。
- 按照显示的步骤操作。
要提交更复杂的反馈,请创建一个 Bugzilla ticket:
- 进入 Bugzilla 网站。
- 在 Component 中选择 Documentation。
- 在 Description 中输入您要提供的信息。包括文档相关部分的链接。
- 点 Submit Bug。
第 1 章 调节 IdM 时的重要注意事项
对身份管理组件服务进行微调,以适用于大多数部署的最佳方式。作为系统管理员,您可能想要调整 IdM 服务的性能,以适应特定环境的需求。
重要注意事项
- 每个 IdM 部署可能有不同的硬件、软件、联网、数据、工作负载和其他因素,因此每个部署都可能有其唯一性。适合一个环境的调整可能并不适合于另一个环境。
- 性能升级是一个迭代的实验过程。红帽建议一次仅调整一个变量,并监控其在环境中的影响。在通过一个变量达到预期的结果后,调整下一个变量,同时继续监控之前调整的性能。
第 2 章 硬件建议
对于性能调整,RAM 是最重要的硬件。请确定您的系统有足够可用 RAM。典型的 RAM 要求是:
- 对于 10,000 个用户和 100 个组:至少 4 GB RAM 和 4 GB 交换(swap)空间
- 对于 100,000 个用户和 50,000 个组:至少 16 GB RAM 和 4 GB swap 空间
对于较大的部署,增加 RAM 比增加磁盘空间更为有效,因为许多数据都存储在缓存中。通常,对于大型部署,添加更多 RAM 会因为有更多的缓存使系统具有更好的性能。
基本用户条目或带有证书的简单主机条目大约是 5-10 kB 大小。
第 3 章 IdM 中的故障转移、负载平衡和高可用性
身份管理(IdM)为 IdM 客户端提供了内置的故障转移机制,为 IdM 服务器提供了负载平衡和高可用性功能。
3.1. 客户端故障转移功能
默认情况下,IdM 客户端中的
SSSD
服务被配置为使用 DNS 中的服务(SRV)资源记录来自动决定要连接的最佳 IdM 服务器。这个行为由/etc/sssd/sssd.conf
文件的ipa_server
参数中的_srv_
选项控制:[root@client ~]# cat /etc/sssd/sssd.conf [domain/example.com] id_provider = ipa ipa_server = _srv_, server.example.com ...
如果 IdM 服务器离线,IdM 客户端中的 SSSD 服务会自动连接到另一个 IdM 服务器。
如果您希望因为性能原因绕过 DNS 查找,请从
ipa_server
参数中删除_srv_
条目,并指定客户端应该连接的 IdM 服务器,按首选顺序排列:[root@client ~]# cat /etc/sssd/sssd.conf [domain/example.com] id_provider = ipa ipa_server = server1.example.com, server2.example.com ...
3.2. 服务器端负载平衡和服务可用性
您可以通过安装多个 IdM 副本在 IdM 中实现负载平衡和高可用性:
- 如果您的网络分布在不同的地理位置,可以通过为每个数据中心配置多个 IdM 副本来缩短 IdM 客户端和最快的服务器间的路径。
- 红帽支持最多有 60 个副本的环境。
- IdM 复制机制提供主动/主动服务可用性:所有 IdM 副本的服务都同时可用。
红帽建议不要将 IdM 和其它负载均衡或高可用性(HA)软件合并。
许多第三方高可用性解决方案假定使用主动/被动模式,并可能导致 IdM 服务出现不必要的中断。其他解决方案使用虚拟 IP 或每个集群服务使用一个主机名。所有这些方法通常不适用于 IdM 所提供的服务。另外,它们与 Kerberos 的集成效果也不好,从而降低了部署的整体安全性和稳定性。
第 4 章 优化副本拓扑
一个良好的副本拓扑可以对工作负载进行分散,并减少复制延迟。按照以下步骤优化副本拓扑布局。
4.1. 确定正确的副本数
- 为每个数据中心设置至少两个副本(这并不是硬要求)
- 数据中心可以位于主要的办公室,也可以处于其他地理位置。
- 为您的客户端设置足够数量的服务器
- 一个 IdM 服务器可为 2000 - 3000 个客户端提供服务。这假设客户端每天会多次查询服务器,但不会每分钟都查询一次。如果您预期使用更频繁的查询,请计划更多的服务器。
- 设置足够数量的证书颁发机构(CA)副本
- 只有安装了 CA 角色的副本才能复制证书数据。如果使用 IdM CA,请确保您的环境至少有两个带有证书复制协议的 CA 副本。
- 在单个 IdM 域中设置最多 60 个副本
- 红帽支持最多有 60 个副本的环境。
4.2. 在拓扑中连接副本
- 将每个副本连接到至少两个其他副本
- 配置额外的复制协议确保信息不仅在初始副本和您安装的第一个服务器之间复制,而且在其他副本之间复制。
- 将副本连接到最多四个其他副本(这并不是硬要求)
每个服务器有大量的复制协议不会带来很大的好处。接收副本一次只能由另一个副本更新,而其他复制协议则处于闲置状态。每个副本有超过四个复制协议通常意味着资源不足。
注意本建议适用于证书复制协议和域复制协议。
每个副本有四个复制协议的限制有两个例外:
- 如果某些副本没有在线或没有响应时,您需要使用故障切换路径。
- 在大型部署中,您需要特定节点间的其他直接链接。
配置大量复制协议可能会对整体性能造成负面影响:当拓扑中的多个复制协议正在发送更新时,某些副本可能会在进入更新和传出更新之间在更改日志数据库文件出现高竞争。
如果您决定每个副本使用更多复制协议,请确保您没有遇到复制问题和延迟。但请注意,但距离大及存在大量中间节点时也可能造成延迟问题。
- 相互连接数据中心中的副本
- 这样可保证数据中心中的域复制。
- 将每个数据中心连接到至少两个其他数据中心
- 这样可确保数据中心间的域复制。
- 至少使用一对复制协议连接数据中心
- 如果数据中心 A 和 B 有从 A1 到 B1 的复制协议,当存在从 A2 到 B2 的复制协议时,可确保其中一个服务器停止工作时复制可在两个数据中心之间继续。
4.3. 副本拓扑示例
下图显示了基于创建可靠拓扑指南的身份管理(IdM)拓扑示例。
副本拓扑示例 1 显示四个数据中心,每个数据中心有四个服务器。服务器与复制协议连接。
图 4.1. 副本拓扑示例 1

副本拓扑示例 2 显示三个数据中心,每个数据中心都有不同的服务器数量。服务器与复制协议连接。
图 4.2. 副本拓扑示例 2

4.4. 其他资源
- 有关建立有效副本拓扑的详情,请参阅规划副本拓扑。
第 5 章 调整搜索大小和时间限制
有些查询(比如请求 IdM 用户列表)可能会返回大量条目。通过调整这些搜索操作,您可以在运行 ipa *-find
命令时提高总体服务器性能,如 ipa user-find
,并在 Web UI 中显示对应的列表。
- 搜索大小限制
定义从客户端 CLI 发送发送到服务器的请求或从访问 IdM Web UI 的浏览器返回的最大条目数。
默认: 100 条目。
- 搜索时间限制
定义服务器等待搜索运行的最长时间(以秒为单位)。搜索达到这个限制后,服务器将停止搜索并返回该时间里发现的条目。
默认: 2 秒。
如果您将值设为 -1
,IdM 不会在搜索时应用任何限制。
如果设置的搜索大小或时间限制太大,则可能会对服务器性能造成负面影响。
5.1. 在命令行中调整搜索大小和时间限制
以下文本描述了在命令行中调整搜索大小和时间限制:
- 全局
- 对于一个特定条目
流程
要在 CLI 中显示当前的搜索时间和大小限制,请使用 ipa config-show 命令:
$ ipa config-show Search time limit: 2 Search size limit: 100
要为所有查询全局调整限制,请使用
ipa config-mod
命令并添加--searchrecordslimit
和--searchtimelimit
选项。例如:$ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
-
要仅为特定查询调整限制,请在该命令中添加
--sizelimit
或--timelimit
选项。例如:
$ ipa user-find --sizelimit=200 --timelimit=120
5.2. 在 Web UI 中调整搜索大小和时间限制
以下文本描述了在 IdM Web UI 中调整搜索大小和时间限制:
- 全局
- 对于一个特定条目
流程
为所有查询在全局范围内调整限制:
- 登录到 IdM Web UI。
点 IPA Server。
- 在 IPA Server 选项卡中点 Configuration。
在搜索选项区域中设置所需的值。
默认值为:
- 搜索大小限制: 100 个条目
- 搜索时间限值: 2 秒
点页面顶部的 Save。
保存值后,搜索条目并验证结果。
第 6 章 调整 IdM Directory 服务器性能
您可以通过调整 LDAP 属性来控制目录服务器的资源和行为来调整身份管理数据库的性能。
要调整目录服务器缓存数据的方式,请参阅以下步骤:
要调整 Directory 服务器的资源限值,请参阅以下步骤:
要调整对性能有最大影响的超时设置,请参阅以下步骤:
6.1. 调整条目缓存大小
红帽建议您使用内置缓存自动缩放功能来优化性能。只有在需要与自动调整的值分离时才会更改这个值。
nsslapd-cachememsize
属性指定条目缓存的可用内存空间大小(以字节为单位)。这个属性是控制目录服务器使用的物理 RAM 最重要的值之一。
如果条目缓存大小太小,您可能在 Directory Server 错误日志中看到以下错误: /var/log/dirsrv/slapd-INSTANCE-NAME/errors
REASON: entry too large (83886080 bytes) for the import buffer size (67108864 bytes). Try increasing nsslapd-cachememsize.
红帽建议在内存中安装条目缓存和数据库索引条目缓存。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --cache-autosize=0
显示数据库后缀及其对应的后端。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com 后端后缀列表 cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)
这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置条目缓存大小。这个示例将 userroot 数据库的条目缓存设置为 2GB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --cache-memsize=2147483648 userroot
重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
cache-memsize
调整为不同的值,或者重新启用缓存自动大小。
验证步骤
显示
nsslapd-cachememsize
属性的值,并将其设置为您所需值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cachememsize nsslapd-cachememsize: 2147483648
其它资源
-
有关
nsslapd-cachememsize
属性的详情,请参阅 nsslapd-cachememsize。 - 要重新启用缓存自动大小,请参阅启用条目和数据库缓存自动大小。
6.2. 调整数据库索引缓存大小
红帽建议您使用内置缓存自动缩放功能来优化性能。只有在需要与自动调整的值分离时才会更改这个值。
nsslapd-dbcachesize
属性控制数据库索引使用的内存量。这个缓存大小对 Directory 服务器性能的影响比条目缓存大小的影响要小。但是如果在设定了条目缓存大小后有可用的 RAM,红帽建议增加分配给数据库缓存的内存量。
数据库缓存限制为 1.5 GB RAM,因为更高的值并不会提高性能。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
禁用自动缓存调整,并设置数据库缓存大小。这个示例将数据库缓存设置为 256MB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --cache-autosize=0 --dbcachesize=268435456
重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
dbcachesize
调整为不同的值,或者重新启用缓存自动大小。
验证步骤
显示
nsslapd-dbcachesize
属性的值,并将其设置为您所需值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dbcachesize nsslapd-dbcachesize: 2147483648
其它资源
-
有关
nsslapd-dbcachesize
属性的详情,请查看 nsslapd-dbcachesize。 - 要重新启用缓存自动大小,请参阅启用条目和数据库缓存自动大小。
6.3. 重新启用数据库和条目缓存自动大小
红帽建议您使用内置缓存自动缩放功能来优化性能。红帽不推荐手动设置缓存大小。
默认情况下,IdM Directory 服务器会自动决定数据库缓存和条目缓存的最佳大小。自动的设置会忽略一部分可用 RAM,并在实例启动时根据服务器的硬件资源优化这两个缓存的大小。
使用这个流程取消自定义数据库缓存和条目缓存值,并将缓存自动大小功能恢复到默认值。
|
这个设置控制为自动分配数据库和条目缓存而分配的可用 RAM 量。 |
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
|
这个值设定由 |
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- 之前您已经禁用了数据库和条目缓存自动扩展。
流程
停止 Directory 服务器。
[root@server ~]# systemctl stop dirsrv.target
在进行任何进一步修改前备份
/etc/dirsrv/slapd-instance_name/dse.ldif
文件。[root@server ~]# *cp /etc/dirsrv/slapd-instance_name/dse.ldif \ /etc/dirsrv/slapd-instance_name/dse.ldif.bak.$(date "+%F_%H-%M-%S")
编辑
/etc/dirsrv/slapd-instance_name/dse.ldif
文件:设置用于数据库的可用系统 RAM 百分比,恢复默认的 10% 可用 RAM。
nsslapd-cache-autosize: 10
将可用系统 RAM 中数据库缓存使用的百分比设置为默认的 25%:
nsslapd-cache-autosize-split: 25
-
将您的更改保存到
/etc/dirsrv/slapd-instance_name/dse.ldif
文件中。 启动 Directory 服务器。
[root@server ~]# systemctl start dirsrv.target
验证步骤
显示
nsslapd-cache-autosize
和nsslapd-cache-autosize-split
属性的值,并确认它们已设置为您所需的值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-cache-autosize nsslapd-cache-autosize: *10 nsslapd-cache-autosize-split: 25
其它资源
-
有关
nsslapd-cache-autosize
和nsslapd-cache-autosize-split
属性的详情,请参阅在 Directory Server 11 中手动重新启用数据库和条目自动大小调整功能。
6.4. 调整 DN 缓存大小
红帽建议您使用内置缓存自动缩放功能来优化性能。只有在需要与自动调整的值分离时才会更改这个值。
nsslapd-dncachememsize
属性指定可辨识名称(DN)缓存的可用内存空间大小(以字节为单位)。DN 缓存与数据库的条目缓存类似,但它的表仅存储条目 ID 和 DN 条目,这样可以更快地查找 rename
和 moddn
操作。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
(可选) 显示数据库后缀及其对应的数据库名称。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com 后端后缀列表 dc=example,dc=com (userroot)
这个命令显示每个后缀旁的后端数据库名称。在下一步中使用后缀的数据库名称。
为数据库设置 DN 缓存大小。这个示例将 DN 缓存设置为 20MB。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix set --dncache-memsize=20971520 userroot
重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
dncache-memsize
调整为不同的值,或者返回到默认值 10MB。
验证步骤
显示
nsslapd-dncachememsize
属性的新值,并将其设置为您所需值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=userroot,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-dncachememsize nsslapd-dncachememsize: 20971520
其它资源
-
有关
nsslapd-dncachememsize
属性的详情,请查看 nsslapd-dncachememsize。
6.5. 调整规范化 DN 缓存大小
红帽建议您使用内置缓存自动缩放功能来优化性能。只有在需要与自动调整的值分离时才会更改这个值。
nsslapd-ndn-cache-max-size
属性控制存储规范可分辨名称(NDN)的缓存的大小,以字节为单位。增加这个值将在内存中保留更频繁使用的 DN。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
确保启用了 NDN 缓存。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-ndn-cache-enabled Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-enabled: on
如果缓存是
off
,使用以下命令启用它。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-ndn-cache-enabled=on Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-ndn-cache-enabled"
检索
nsslapd-ndn-cache-max-size
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-ndn-cache-max-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-max-size: 20971520
修改
nsslapd-ndn-cache-max-size
属性的值。这个示例将值增加到41943040
(40 MB)。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-ndn-cache-max-size=41943040
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
nsslapd-ndn-cache-max-size
调整为不同的值,或者重新启用缓存自动大小。
验证步骤
显示
nsslapd-ndn-cache-max-size
属性的新值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-ndn-cache-max-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ndn-cache-max-size: 41943040
其它资源
-
有关
nsslapd-ndn-cache-max-size
属性的详情,请参阅 nsslapd-ndn-cache-max-size。
6.6. 调整最大消息大小
nsslapd-maxbersize
属性以字节为单位设定传入消息或 LDAP 请求的最大值。限制请求大小可防止某种形式拒绝服务攻击。
如果最大消息大小太小,您可能在 Directory Server 错误日志中看到以下错误: /var/log/dirsrv/slapd-INSTANCE-NAME/errors
Incoming BER Element was too long, max allowable is 2097152 bytes. Change the nsslapd-maxbersize attribute in cn=config to increase.
限制适用于 LDAP 请求的总大小。例如,如果请求要添加条目,并且请求中的条目大于配置的值或默认值,则拒绝添加请求。但是,这个限制不适用于复制进程。在更改此属性前请小心。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-maxbersize
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get _nsslapd-maxbersize Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxdescriptors: 209715200
修改
nsslapd-maxbersize
属性的值。这个示例将值增加到419430400
。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-maxbersize=419430400
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxbersize"
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
nsslapd-maxbersize
调整为不同的值,或者返回209715200
默认值。
验证步骤
显示
nsslapd-maxbersize
属性的值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-maxbersize Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxbersize: 419430400
其它资源
-
有关
nsslapd-maxbersize
属性的详情,请查看 nsslapd-maxbersize(最大消息大小)。
6.7. 调整文件描述符的最大数量
nsslapd-maxdescriptors
属性设置 Directory 服务器使用的最大、平台的相关文件描述符。文件描述符用于客户端连接、日志文件、套接字和其他资源。
如果您设置的 nsslapd-maxdescriptors
值高于操作系统允许 ns-slapd
使用的文件描述符总数,Directory 服务器会查询操作系统获取最大允许值,然后使用该值。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-maxdescriptors
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-maxdescriptors Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxdescriptors: 4096
修改
nsslapd-maxdescriptors
属性的值。这个示例将值增加到8192
。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-maxdescriptors=8192
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-maxdescriptors"
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
nsslapd-maxdescriptors
调整为不同的值,或者返回使用4096
默认值。
验证步骤
显示
nsslapd-maxdescriptors
属性的值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-maxdescriptors Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-maxdescriptors: 8192
其它资源
-
有关
nsslapd-maxdescriptors
属性的详情,请查看 nsslapd-maxdescriptors(Maximum File Descriptors)。
6.8. 调整连接数据的大小
侦听服务设定可用于接收进入的连接的套接字的数量。nsslapd-listen-backlog-size
值在拒绝连接前设置 sockfd
套接字的最大队列长度。
如果您的 IdM 环境处理大量连接,请考虑增加 nsslapd-listen-backlog-size
的值。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-listen-backlog-size
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-listen-backlog-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-listen-backlog-size: 128
修改
nsslapd-listen-backlog-size
属性的值。这个示例将值增加到192
。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-listen-backlog-size=192
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-listen-backlog-size"
验证步骤
显示
nsslapd-listen-backlog-size
属性的值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-listen-backlog-size Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-listen-backlog-size: 192
其它资源
-
有关
nsslapd-listen-backlog-size
属性的详情,请查看 nsslapd-listen-backlog-size。
6.9. 调整数据库锁定的最大数量
锁定机制控制目录服务器进程可以同时运行多少个副本,nsslapd-db-locks
参数设置最大锁定数。
如果您在 /var/log/dirsrv/slapd-instance_name/errors
日志文件中看到以下出错信息,请增加锁定的最大数量:
libdb: Lock table is out of available locks
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-db-locks
参数的当前值,并在需要恢复任何调整前记录它。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks nsslapd-db-locks: 50000
修改
locks
属性的值。这个示例将值加倍为100000
个锁定。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --locks=100000
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully updated database configuration
重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
验证步骤
显示
nsslapd-db-locks
属性的值,并将其设置为您所需值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=bdb,cn=config,cn=ldbm database,cn=plugins,cn=config" | grep nsslapd-db-locks nsslapd-db-locks: 100000
其它资源
-
有关
nsslapd-db-locks
属性的详情,请查看 nsslapd-db-locks。
6.10. 调整输入/输出块超时
nsslapd-ioblocktimeout
属性设置在停止的 LDAP 客户端连接关闭后以毫秒为单位的时间。当 LDAP 客户端没有为读或写操作进行任何 I/O 处理时,它被视为已停止工作。
降低 nsslapd-ioblocktimeout
属性的值来更早地释放连接。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-ioblocktimeout
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-ioblocktimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-ioblocktimeout: 10000
修改
nsslapd-ioblocktimeout
属性的值。这个示例将值降低到8000
。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-ioblocktimeout=8000
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-ioblocktimeout"
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
nsslapd-ioblocktimeout
调整为不同的值,或者返回10000
默认值。
验证步骤
显示
nsslapd-ioblocktimeout
属性的值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-ioblocktimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 8000
其它资源
-
有关
nsslapd-ioblocktimeout
属性的详情,请查看 sslapd-ioblocktimeout(IO Block Time Out)。
6.11. 调整闲置连接超时
nsslapd-idletimeout
属性以秒为单位设置闲置 LDAP 客户端连接被 IdM 服务器关闭的时间长度(以秒为单位)。0
表示服务器永远不会关闭闲置连接。
红帽建议调整这个值,以便关闭过时的连接,但不会永久关闭活动连接。
默认值 |
|
有效范围 |
|
条目 DN 位置 |
|
先决条件
- LDAP Directory Manager 密码
流程
检索
nsslapd-idletimeout
参数的当前值,并在需要恢复任何调整前记录它。提示时输入 Directory Manager 密码。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-idletimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 3600
修改
nsslapd-idletimeout
属性的值。这个示例将值降低为1800
(30 分钟)。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-idletimeout=1800
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "nsslapd-idletimeout"
-
监控 IdM 目录服务器的性能。如果它没有以理想的方式改变,请重复这个过程并将
nsslapd-idletimeout
调整为不同的值,或者返回3600
默认值。
验证步骤
显示
nsslapd-idletimeout
属性的值,并将其设置为您所需值。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com config get nsslapd-idletimeout Enter password for cn=Directory Manager on ldap://server.example.com: nsslapd-idletimeout: 3600
其它资源
-
有关
nsslapd-idletimeout
属性的详情,请查看 sslapd-idletimeout(默认 Idle Timeout)。
6.12. 调整复制发行超时
IdM 副本在带有另一个副本的复制会话中被独占锁定。在某些情况下,由于大型更新或网络拥塞,副本被长时间锁定,这增加了复制延迟。
您可以通过调整 repl-release-timeout
参数在固定时间后发布副本。红帽建议把这个值设置在 30
和 120
之间:
- 如果值设置得过低,副本会持续重播,副本将无法发送较大的更新。
-
超时时间较长可能会提高高流量情况,如果服务器最好在较长时间内只访问副本,但大于
120
秒的值会减慢复制速度。
默认值 |
|
有效范围 |
|
推荐的范围 |
|
先决条件
- LDAP Directory Manager 密码
流程
显示数据库后缀及其对应的后端。
[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com 后端后缀列表 cn=changelog (changelog) dc=example,dc=com (userroot) o=ipaca (ipaca)
这个命令会在后缀旁的显示后端数据库名称。在下一步中使用后缀名称。
修改主用户 root 数据库的
repl-release-timeout
属性值。这个示例将值增加到90
秒。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set --suffix="dc=example,dc=com" --repl-release-timeout=90
身份验证为 Directory Manager 以进行配置更改。
Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"
(可选)如果您的 IdM 环境使用 IdM 证书颁发机构(CA),您可以修改 CA 数据库的
repl-release-timeout
属性的值。这个示例将值增加到90
秒。[root@server ~]# dsconf -D "cn=Directory Manager" ldap://server.example.com replication set --suffix="o=ipaca" --repl-release-timeout=90 Enter password for cn=Directory Manager on ldap://server.example.com: Successfully replaced "repl-release-timeout"
重启 Directory 服务器。
[root@server ~]# systemctl restart dirsrv.target
-
监控 IdM 目录服务器的性能。如果没有以所需方式更改,请重复这个过程,将
repl-release-timeout
调整为不同的值,或者返回默认值60
秒。
验证步骤
显示
nsds5ReplicaReleaseTimeout
属性的值,并将其设置为您所需值。[root@server ~]# ldapsearch -D "cn=directory manager" -w DirectoryManagerPassword -b "cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config" | grep nsds5ReplicaReleaseTimeout nsds5ReplicaReleaseTimeout: 90
在本例中,后缀的可辨识名称为 dc=example,dc=com
,但在 ldapsearch
命令中必须转义等号(=
)和逗号(,
)。
使用以下转义字符将后缀 DN 转换为 cn=dc\3Dexample\2Cdc\3Dcom
:
-
\3D
替换=
-
\2C
替换,
其它资源
-
有关
repl-release-timeout
选项设置的nsds5ReplicaReleaseTimeout
属性的详情,请查看 DS5ReplicaReleaseTimeout。
6.13. 其它资源
- 有关 Directory Server 11 中调整选项的完整列表,请查看 Directory Server 11 性能调节指南。
第 7 章 调整 KDC 的性能
以下小节介绍了如何调整 Kerberos 密钥分发中心(KDC)的性能,后者负责对用户、主机和服务进行身份验证。
7.1. 控制常规 KDC 行为的选项
您可以通过在 /var/kerberos/krb5kdc/kdc.conf
文件的 [kdcdefaults]
部分设置以下选项来调整常规 KDC 行为。
- kdc_tcp_listen_backlog
这个选项设置 KDC 守护进程的监听队列长度的大小。对于遇到大量 Kerberos 流量的一些 IdM 部署,
5
的默认值可能太低,但设置这个值会降低性能。默认值
5
有效范围
1 - 10
7.2. 调整常规 KDC 设置
这个过程调整了一般的 KDC 行为。
流程
-
在文本编辑器中打开
/var/kerberos/krb5kdc/kdc.conf
文件。 在
[kdcdefaults]
部分指定任意选项及其所需值。在这个示例中,您要将 TCP 侦听功能设置为7
。[kdcdefaults] ... kdc_tcp_listen_backlog = 7
-
保存并关闭
/var/kerberos/krb5kdc/kdc.conf
文件。 - 重启 KDC 来加载新设置。
7.3. 每个域控制 KDC 行为的选项
为跟踪每个 Kerberos 域的用户帐户锁定和解锁,KDC 在每次成功和失败的身份验证后写入其数据库。通过在 /etc/krb5.conf
文件的 [dbmodules]
部分中调整以下选项,您可以最大程度减少 KDC 写入信息的频率来提高性能。
- disable_last_success
如果设置为
true
,这个选项会阻止 KDC 更新需要预身份验证的主体条目的Last successful authentication
字段。默认值
false
有效范围
true
或者false
- disable_lockout
如果设置为
true
,这个选项会阻止 KDC 更新到需要预身份验证的主条目的Last failed authentication
和Failed password attempts
字段。设置此标志可能会提高性能,但禁用帐户锁定可能会被视为安全风险。默认值
false
有效范围
true
或者false
7.4. 根据每个域(realm)调整 KDC 设置
这个过程调整每个 Kerberos 域的 KDC 行为。
流程
-
在文本编辑器中打开
/etc/krb5.conf
文件。 在
[dbmodules]
部分以及相应的 Kerberos 域中指定任意选项及其所需的值。在本例中,您要为EXAMPLE.COM
Kerberos 域设置disable_last_success
变量。[dbmodules] EXAMPLE.COM = { disable_last_success = true }
-
保存并关闭
/etc/krb5.conf
文件。 - 重启 KDC 来加载新设置。
7.5. 其它资源
-
有关附加
kdc.conf
选项的更多信息,请参阅 MIT Kerberos Documentation - kdc.conf。
第 8 章 在 IdM 服务器和客户端中调整 SSSD 以进行大型 IdM-AD 信任部署
检索用户和组信息是系统安全服务守护进程(SSSD)的一项数据密集型操作,特别是在信任大型 Active Directory(AD)域的 IdM 部署中。您可以通过调整 SSSD 从身份提供程序检索的信息和时长来提高此性能。
8.1. 为大型 IdM-AD 信任部署在 IdM 服务器中调整 SSSD
此流程对 IdM 服务器中的 SSSD 服务配置应用调整选项,以改进从大型 AD 环境检索信息时的响应时间。
先决条件
-
您需要
root
权限来编辑/etc/sssd/sssd.conf
配置文件。
流程
-
在文本编辑器中打开
/etc/sssd/sssd.conf
配置文件。 在您的 Active Directory 域的
[domain]
部分添加以下选项。如果您还没有 AD 域的 domain 部分,请创建一个。[domain/ad.example.com] ignore_group_members = true subdomain_inherit = ignore_group_members ...
-
保存并关闭服务器中的
/etc/sssd/sssd.conf
文件。 重启 SSSD 服务以载入配置更改。
[root@client ~]# systemctl restart sssd
8.2. 为大型 IdM-AD 信任部署在 IdM 客户端中调整 SSSD
此流程将调整选项应用于 IdM 客户端中的 SSSD 服务配置,以改进从大型 AD 环境检索信息的响应时间。
先决条件
-
您需要
root
权限来编辑/etc/sssd/sssd.conf
配置文件。
流程
确定单个未缓存登录所需的秒数。
清除 IdM 客户端
client.example.com
上的 SSSD 缓存。[root@client ~]# sss_cache -E
测量使用
time
命令以 AD 用户身份登录所需的时间。在这个示例中,使用 IdM 客户端client.example.com
,从ad.example.com
AD 域登录到与用户ad-user
相同的主机。[root@client ~]# time ssh ad-user@ad.example.com@client.example.com
尽快输入密码。
Password: Last login: Sat Jan 23 06:29:54 2021 from 10.0.2.15 [ad-user@ad.example.com@client ~]$
尽快注销以显示已经过的时间。在这个示例中,一个 un-cached 登录大约需要
9
秒。[ad-user@ad.example.com@client /]$ exit logout Connection to client.example.com closed. real 0m8.755s user 0m0.017s sys 0m0.013s
-
在文本编辑器中打开
/etc/sssd/sssd.conf
配置文件。 在您的 Active Directory 域的
[domain]
部分添加以下选项。将pam_id_timeout
和krb5_auth_timeout
选项设置为未缓存登录所需的秒数。如果您还没有 AD 域的 domain 部分,请创建一个。[domain/ad.example.com] pam_id_timeout = 9 krb5_auth_timeout = 9 ldap_deref_threshold = 0 ...
-
保存并关闭服务器中的
/etc/sssd/sssd.conf
文件。 重启 SSSD 服务以载入配置更改。
[root@client ~]# systemctl restart sssd
8.3. 在 tmpfs
中挂载 SSSD 缓存
系统安全服务守护进程(SSSD)持续将 LDAP 对象写入其缓存。这些内部 SSSD 事务将数据写入磁盘,比从 Random-Access Memory(RAM)读取和写入速度要慢得多。
要提高此性能,请在 RAM 中挂载 SSSD 缓存。
注意事项
- 如果 SSSD 缓存在 RAM 中,则缓存的信息不会在重启后保留。
- 安全地在 IdM 服务器中执行此更改,因为 IdM 服务器上的 SSSD 实例无法丢失与同一主机上的 Directory 服务器的连接。
- 如果您在 IdM 客户端上执行这个调整,并且丢失了与 IdM 服务器的连接,用户在重启后将无法进行身份验证,直到您重新建立连接为止。
先决条件
-
您需要
root
权限来编辑/etc/fstab
配置文件。
流程
通过将以下条目添加到
/etc/fstab
作为一行来创建tmpfs
临时文件系统:tmpfs /var/lib/sss/db/ tmpfs size=300M,mode=0700,rootcontext=system_u:object_r:sssd_var_lib_t:s0 0 0
这个示例创建了一个 300MB 缓存。根据您的 IdM 和 AD 目录大小调整
size
参数,每个 10,000 LDAP 条目大约为 100 MBs。挂载新的 SSSD 缓存目录。
[root@host ~]# mount /var/lib/sss/db/
重启 SSSD 以反应这个配置更改。
[root@host ~]# systemctl restart sssd
8.4. 为大型 IdM-AD 信任部署在 IdM 服务器和客户端中调整 SSSD 的选项
/etc/sssd/sssd.conf
配置文件中的以下选项。
8.4.1. IdM 服务器的调优选项
- ignore_group_members
在验证和授权用户时,了解用户所属的组而不是属于组的所有用户是非常重要地。当
ignore_group_members
设置为true
时,SSSD 只检索组对象本身而不是它们的成员信息,从而显著提高性能。注意id user@ad-domain.com
命令仍然会返回正确的组列表,但getent group ad-group@ad-domain.com
会返回一个空列表。默认值
false
推荐的值
true
- subdomain_inherit
使用
subdomain_inherit
选项,您可以将ignore_group_members
设置应用到可信 AD 域配置。subdomain_inherit
选项中列出的设置适用于主域(IdM)域和 AD 子域。默认值
none
推荐的值
subdomain_inherit = ignore_group_members
8.4.2. IdM 客户端的调优选项
- pam_id_timeout
这个参数控制 PAM 会话结果的时长,以避免在身份查找过程中过量回滚到身份提供程序。在 IdM 服务器和 IdM 客户端中填充复杂组成员资格的环境中,默认值
5
秒可能不足。红帽建议将pam_id_timeout
设置为未缓存的单个登录所需的秒数。默认值
5
推荐的值
the number of seconds a single un-cached login takes
- krb5_auth_timeout
增加
krb5_auth_timeout
可以有足够的时间在用户是大量组成员的环境中处理复杂的组信息。红帽建议把这个值设置为一个未缓存的登录所花的秒数。默认值
6
推荐的值
the number of seconds a single un-cached login takes
- ldap_deref_threshold
解引用查找是在单个 LDAP 调用中获取所有组成员的方法。
ldap_deref_threshold
值指定必须从内部缓存中缺少的组成员数,以便触发对解引用(dereference)的查找。如果缺少的成员较少,则会单独查找。在大型环境中,解引用查找可能需要很长时间,并降低性能。要禁用解引用查找,将此选项设置为0
。默认值
10
推荐的值
0