第 4 章 调优锁定数量

Directory 服务器中的锁定机制控制目录服务器进程可以同时运行多少个副本。例如,在导入作业过程中,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

但是,Directory 服务器默认设置会尝试防止服务器没有锁定,以避免数据崩溃。详情请参阅 监控免费数据库锁定的数据崩溃

4.1. 通过监控空闲数据库锁定来避免数据崩溃

退出数据库锁定可能会导致数据崩溃。要避免这种情况,Directory 服务器会监控每 500 毫秒的剩余空闲数据库锁定数量,如果活跃数据库锁定数等于或大于 90%,Directory 服务器会中止所有搜索。

这个过程将间隔改为 600 毫秒,阈值更改为 85%

注意

如果您设置了太高的间隔,则服务器可在下一次监控检查发生前退出锁定。设置太短的间隔可能会减慢服务器的速度。

流程

  1. 设置间隔和阈值:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --locks-monitoring-enabled on --locks-monitoring-pause 600 --locks-monitoring-threshold 85
  2. 重启实例:

    # dsctl instance_name restart

验证

  • 显示锁定监控设置:

    # 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