![見出し画像](https://assets.st-note.com/production/uploads/images/117659535/rectangle_large_type_2_3d71c2356484b102e899141556d98a51.png?width=1200)
390.3 OpenLDAPサーバのパフォーマンスチューニング
主題390:OpenLDAP の設定
390.3 OpenLDAPサーバのパフォーマンスチューニング
LinuC300の試験範囲である主題390~397まであるうちの「主題390:OpenLDAP の設定」から「390.3 OpenLDAPサーバのパフォーマンスチューニング」についてのまとめ
重要度:2
説明:
LDAPサーバのパフォーマンスを測定し、設定ディレクティブを調整できること。主要な知識範囲:
- LDAPのパフォーマンスを測定する
- パフォーマンスを向上させるためソフトウェアの設定を調整する
- インデックスを理解する重要なファイル、用語、ユーティリティ:
- インデックス
- DB_CONFIG
LDAPのパフォーマンスを測定する
OpenLDAPの状態はcn=Monitor配下のディレクトリで確認できる。
[root@rocky9-ldap27 ~]#
[root@rocky9-ldap27 ~]# ldapsearch -LLL -x -D "cn=Manager,dc=example,dc=co,dc=jp" -W -b "cn=Monitor" -s one
Enter LDAP Password: ********
dn: cn=Backends,cn=Monitor
objectClass: monitorContainer
cn: Backends
description: This subsystem contains information about available backends.
dn: cn=Connections,cn=Monitor
objectClass: monitorContainer
cn: Connections
description: This subsystem contains information about connections.
dn: cn=Databases,cn=Monitor
objectClass: monitorContainer
cn: Databases
description: This subsystem contains information about configured databases.
dn: cn=Listeners,cn=Monitor
objectClass: monitorContainer
cn: Listeners
description: This subsystem contains information about active listeners.
dn: cn=Log,cn=Monitor
objectClass: monitorContainer
cn: Log
description: This subsystem contains information about logging.
description: Set the "monitorLogLevel" or "monitorDebugLevel" attributes to th
e desired levels.
dn: cn=Operations,cn=Monitor
objectClass: monitorContainer
cn: Operations
description: This subsystem contains information about performed operations.
dn: cn=Overlays,cn=Monitor
objectClass: monitorContainer
cn: Overlays
description: This subsystem contains information about available overlays.
dn: cn=SASL,cn=Monitor
objectClass: monitorContainer
cn: SASL
description: This subsystem contains information about SASL.
dn: cn=Statistics,cn=Monitor
objectClass: monitorContainer
cn: Statistics
description: This subsystem contains statistics.
dn: cn=Threads,cn=Monitor
objectClass: monitorContainer
cn: Threads
description: This subsystem contains information about threads.
dn: cn=Time,cn=Monitor
objectClass: monitorContainer
cn: Time
description: This subsystem contains information about time.
dn: cn=TLS,cn=Monitor
objectClass: monitorContainer
cn: TLS
description: This subsystem contains information about TLS.
dn: cn=Waiters,cn=Monitor
objectClass: monitorContainer
cn: Waiters
description: This subsystem contains information about read/write waiters.
[root@rocky9-ldap27 ~]#
~cn=Monitor以下の項目~
dn: cn=Backends,cn=Monitor
バックエンドデータベースに関する情報dn: cn=Connections,cn=Monitor
コネクションに関する情報dn: cn=Databases,cn=Monitor
利用中のバックエンドデータベースの情報dn: cn=Listeners,cn=Monitor
ネットワークに関する情報dn: cn=Log,cn=Monitor
ログレベルに関する情報dn: cn=Operations,cn=Monitor
操作回数等の情報dn: cn=Overlays,cn=Monitor
オーバレイモジュールに関する情報dn: cn=SASL,cn=Monitor
SASLに関する情報dn: cn=Statistics,cn=Monitor
通信量などに関する情報dn: cn=Threads,cn=Monitor
スレッドに関する情報dn: cn=Time,cn=Monitor
起動時間など時間に関する情報dn: cn=TLS,cn=Monitor
TLSに関する情報dn: cn=Waiters,cn=Monitor
読み書き回数に関する情報
パフォーマンスを向上させるためソフトウェアの設定を調整する
データベースをチューニングすることでパフォーマンスを向上させることが期待できる。
~データベースの種類~
MDB/LMDB:OpenLDAP2.4~
MDB(Memory-Mapped Database)
LMDB(Lightning Memory-Mapped Database)
階層型の高性能トランザクション データベース バックエンド。
インデックス作成をサポート
キャッシュを使用しない
チューニングの必要がないBDB(Berkeley DB):~OpenLDAP2.4
高パフォーマンスのトランザクション データベース バックエンド
チューニングにはDB_CONFIGを使用する。HDB(Hierarchical DataBase):~OpenLDAP2.4
BDBの改良版
階層型の高性能トランザクション バックエンド
チューニングにはDB_CONFIGを使用する。LDBM(lightweight DBM):~OpenLDAP2.3
格納するデータベースにはBerkeleyDBまたはGnuDBMを使う。SHELL:~OpenLDAP2.4
シェル スクリプト介して様々なバックエンドデータベースを使えるようにするためのインターフェースPASSWD:
/etc/passwdファイルへの読み取り専用でアクセスするためのインターフェース
~チューニング~
~OpenLDAP2.4:BDBやHDBの場合はDB_CONFIGで設定する。
OpenLDAP2.4~:MDBはチューニングが不要。
バッファキャッシュ
set_cachesize gbytes bytes ncacheログバッファ
set_lg_bsize
set_lg_dir
set_flags
[root@centos7-ldap28 ldap]#
[root@centos7-ldap28 ldap]# slapd -V
@(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $
mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
[root@centos7-ldap28 ldap]#
[root@centos7-ldap28 ldap]# cat /usr/share/openldap-servers/DB_CONFIG.example
# $OpenLDAP$
# Example DB_CONFIG file for use with slapd(8) BDB/HDB databases.
#
# See the Oracle Berkeley DB documentation
# <http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/db_config.html>
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
# <http://www.openldap.org/faq/index.cgi?file=2>
# in particular:
# <http://www.openldap.org/faq/index.cgi?file=1075>
# Note: most DB_CONFIG settings will take effect only upon rebuilding
# the DB environment.
# one 0.25 GB cache
set_cachesize 0 268435456 1
# Data Directory
#set_data_dir db
# Transaction Log settings
set_lg_regionmax 262144
set_lg_bsize 2097152
#set_lg_dir logs
# Note: special DB_CONFIG flags are no longer needed for "quick"
# slapadd(8) or slapindex(8) access (see their -q option).
[root@centos7-ldap28 ldap]#
(参考文献)
インデックスを理解する
LDAPデータベース内のエントリーを検索する際に、毎回すべてのデータを読み込んで検索をすると効率が悪くなるのでインデックスを作成し検索の効率化を図る必要がある。
これはOpenLDAP特有のものではなく、データベース特有のものでありOpenLDAPのバックエンドでBDB/HDBを使っている場合は考慮する必要がある。
~インデックス設定~
近似インデックス:approx
検索値に近い値のエントリを検索するために使われる。等価インデックス:eq
検索値に完全一致するエントリを検索するために使われる。存在インデックス:pres
ある属性を持つエントリを検索するために使われる。部分インデックス:sub
検索値に部分一致するエントリを検索するために使われる。
slapd.confの場合
index {<attrlist> | default} [pres,eq,approx,sub,none]
slapd-confの場合
olcDbIndex: {<attrlist> | default} [pres,eq,approx,sub,none]
~キャッシュ設定~
slapd.confで設定
エントリキャッシュ
cachesize:既定値は1000インデックスキャッシュ
idlcachesize:BDBの場合はcachesizeと同等、HDBの場合はcachesizeの3倍
~確認~
loglevelで32の検索処理デバッグを含めるとログで確認できる。
ログはsyslog/rsyslogに対してファシリティlocal4で出力される。
~コマンド~
slapindex
インデックスを再作成する
[root@centos7-ldap28 ldap]#
[root@centos7-ldap28 ldap]# systemctl stop slapd
[root@centos7-ldap28 ldap]#
[root@centos7-ldap28 ldap]# slapindex -b "dc=example,dc=co,dc=jp" uid
[root@centos7-ldap28 ldap]#
[root@centos7-ldap28 ldap]# systemctl start slapd
[root@centos7-ldap28 ldap]#
(参考文献)
参考文献
LDAPー設定・管理・プログラミングー(OpenLDAP2.1)
ビシッと決めるチューニング:しっかり基本編:OpenLDAPによるディレクトリサーバ運用(5)(1/3 ページ) - @IT
ビシッと決めるチューニング:もう一絞り編:OpenLDAPによるディレクトリサーバ運用(6)(1/3 ページ) - @IT