第 4 章 调整 BDB 锁定数
当目录服务器实例使用 Berkeley 数据库(BDB)时,锁定机制控制目录服务器进程可以同时运行多少个副本。例如,在导入作业过程中,Directory 服务器在 /run/lock/dirsrv/slapd-instance_name/imports/
目录中设置一个锁定,以防止 ns-slapd
Directory Server 进程、另一个导入或导出操作运行。
如果服务器没有可用的锁定,Directory 服务器会在 /var/log/dirsrv/slapd-instance_name/errors
文件中记录以下错误:
libdb: Lock table is out of available locks
libdb: Lock table is out of available locks
但是,Directory 服务器默认设置会尝试防止服务器没有锁定,以避免数据崩溃。详情请参阅 监控免费数据库锁定的数据崩溃
4.1. 通过监控空闲的 BDB 数据库锁定来避免数据崩溃 复制链接链接已复制到粘贴板!
使用 Berkeley 数据库(BDB)锁定可能会导致数据崩溃。要避免这种情况,目录服务器默认每 500 毫秒监控剩余的空闲锁定数量,如果活跃数据库锁的数量相等或大于 90%,则目录服务器会停止所有搜索。
以下流程将间隔更改为 600
毫秒,阈值更改为 85%
。
如果您设置了太高的间隔,则服务器可在下一次监控检查发生前退出锁定。设置太短的间隔可能会减慢服务器的速度。
先决条件
- 目录服务器实例使用 BDB。
流程
设置间隔和阈值:
dsconf instance_name backend config set --locks-monitoring-enabled on --locks-monitoring-pause 600 --locks-monitoring-threshold 85
# dsconf instance_name backend config set --locks-monitoring-enabled on --locks-monitoring-pause 600 --locks-monitoring-threshold 85
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启实例:
dsctl instance_name restart
# dsctl instance_name restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示锁定监控设置:
dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend config get | grep "nsslapd-db-locks-monitoring"
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com backend config get | grep "nsslapd-db-locks-monitoring" nsslapd-db-locks-monitoring-enabled: on nsslapd-db-locks-monitoring-threshold: 85 nsslapd-db-locks-monitoring-pause: 600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow