Show Table of Contents
第36章 エントリーの一括プロビジョニングのパフォーマンスチューニング
ユーザーの追加 (11章ユーザーアカウントの管理) など、通常のワークフローを使用して大量のエントリーを追加すると、非常に時間がかかる可能性があります。本章では、プロビジョニングをできるだけ早く完了できるようにプロセスを調節する方法を説明します。
手順には以下が含まれます。
- Identity Management (IdM) は LDIF ファイルからプロビジョニングされたエントリーを読み込み、対象の IdM LDAP インスタンスにインポートします。
- 管理者は、キャッシュサイズなど特定の属性のカスタム値を設定し、MemberOf および Schema Compatibility プラグインを無効化します。この手順では、MemberOf が無効になったことに対応するため、プロビジョニングされたエントリーで
fixup-memberof.plプラグインを実行します。
この手順は、以下のエントリータイプ (ユーザー、ユーザーグループ、ホスト、ホストグループ、sudo ルール、ホストベースのアクセス制御 (HBAC)) をプロビジョニングするために、設計、テストされました。
一括プロビジョニングの推奨事項と前提条件
推奨事項:
- 大量のエントリー (10,000 件以上) をプロビジョニングする場合には、LDAP クライアントが、エントリーのプロビジョニング先のサーバーにアクセスしたり、サーバーの情報に依存したりできないようにします。たとえば、これはサーバーのポート 389 および 636 を無効にするか、Unix ソケットで機能する LDAPI を使用することで実現できます。理由: MemberOf プラグインはサーバー上で無効になっているのでサーバーのメンバーシップの情報は無効です。
- プロビジョニング中に実行しておく必要がないアプリケーションは停止します。理由: これにより、できるだけマシン上のメモリーを開放されます。ファイルシステムのキャッシュが空いたメモリーを使用することで、プロビジョニングのパフォーマンスを向上します。以下の手順にはすでに IdM サービスを停止して、Directory Server (DS) インスタンスのみを再起動する手順が含まれている点に注意してください。
tomcatなどの IdM サービスは大量のメモリーを消費しますが、プロビジョニング中には使用されません。 - 新規インストールされた IdM デプロイメントで、サーバーが 1 台のみ含まれている場合に、この手順を実行してください。プロビジョニングの完了後のみ、レプリカを作成します。理由: プロビジョニングのスループットは、レプリケーションよりもはるかに早いので、デプロイメントに 1 台以上含まれていると、レプリカの情報が大幅に古くなってしまいます。
前提条件:
- プロビジョニングするエントリーが含まれる LDIF ファイルを生成します。たとえば、既存の IdM デプロイメントを移行する場合には、
ldapsearchユーティリティーを使用して全エントリーをエクスポートし、LDIF ファイルを作成します。LDIF 形式の詳細は、『Red Hat Directory Server Administration Guide』の「About the LDIF File Format」を参照してください。
現在の DS チューニングパラメーター値のバックアップ
- DS チューニングパラメーターの現在の値を取得します。
- データベースのキャッシュサイズおよびデータベースのロック
# ldapsearch -D "cn=directory manager" -w secret -b "cn=config,cn=ldbm database,cn=plugins,cn=config" nsslapd-dbcachesize nsslapd-db-locks ... nsslapd-dbcachesize: 10000000 nsslapd-db-locks: 50000 ...
- エントリーのキャッシュサイズと DN キャッシュサイズ
# ldapsearch -D "cn=directory manager" -w secret -b "cn=userRoot,cn=ldbm database,cn=plugins,cn=config" nsslapd-cachememsize nsslapd-dncachememsize ... nsslapd-cachememsize: 10485760 nsslapd-dncachememsize: 10485760 ...
- 取得した値をメモします。プロビジョニングが完了したら、パラメーターをこれらの値にリセットします。
データベース、ドメインエントリー、DN キャッシュサイズの調節
データベースのキャッシュサイズの場合:
- 必要な値を決定します。推奨の値は通常 200 MB から 500 MB の間となっています。各ユースケースに適した値は、システムで利用できるメモリーにより異なります。
- メモリー 8 GB 以上 → 500 MB
- メモリー 8 GB - 4 GB → 200 MB
- メモリー 4 GB 未満 → 100 MB
- 以下のテンプレートを使用して、決定した値を設定します。
dn: cn=config,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-dbcachesize nsslapd-dbcachesize: db_cache_size_in_bytes
ldapmodifyユーティリティーを使用して LDAP 属性を変更する例は、例36.1「ldapmodifyを使用した LDAP 属性の変更」を参照してください。
例36.1 ldapmodify を使用した LDAP 属性の変更
ldapmodifyコマンドを実行して、属性値を変更するステートメントを追加します。以下に例を示します。# ldapmodify -D "cn=directory manager" -w secret -x dn: cn=config,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-dbcachesize nsslapd-dbcachesize: 200000000
- Ctrl+D を押して、サーバーへの変更を確定、送信します。操作が正常に完了したら、以下のメッセージが表示されます。
modifying entry "cn=config,cn=ldbm database,cn=plugins,cn=config"
ドメインエントリーのキャッシュサイズの場合:
- 必要な値を決定します。推奨の値は 100 MB から 400 MB の間となっています。適切な値は、お使いのシステムで利用可能なメモリーにより異なります。
- メモリー 4 GB 以上 → 400 MB
- メモリー 2 GB - 4 GB → 200 MB
- メモリー 2 GB 未満 → 100 MB
大規模な静的グループをプロビジョニングする場合には、エントリーキャッシュに、グループおよびメンバーなど全エントリーが格納できるサイズにすることを推奨します。 - 以下のテンプレートを使用して、決定した値を設定します。
dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-cachememsize nsslapd-cachememsize: entry_cache_size_in_bytes
ドメイン名 (DN) のキャッシュサイズの場合:
- 最適なパフォーマンスを得るには、DN キャッシュに、プロビジョニングしたエントリーの DN すべてを格納できるようにすることを推奨します。ユースケースに適した値を見積もるには以下を行ってください。
- ファイル内の全 DN エントリー数を確認します。DN エントリーは、
dn:で始まる行に含まれます。たとえば、# grep、sed、wcを使用して確認します。# grep '^dn: ' ldif_file | sed 's/^dn: //' | wc -l 92200
- LDIF ファイルに含まれる全 DN エントリーの文字列のサイズを確認します。
# grep '^dn: ' ldif_file | sed 's/^dn: //' | wc -c 9802460
- 平均の DN サイズの取得: ファイル内の全 DN エントリー数で、全 DN エントリーの文字列のサイズを除算します。例: 9,802,460 / 92,200 ≈ 106
- 平均のメモリーサイズの取得: 平均の DN サイズに 2 を乗算した数値に、32 を加算します。例: (106 * 2) + 32 = 244
- 適切な DN のキャッシュサイズを取得: 平均メモリーサイズで LDIF ファイルの DN エントリーの総数を乗算します。例: 244 * 92,200 = 22,496,800
- 以下のテンプレートを使用して、決定した値を設定します。
dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config changetype: modify Replace: nsslapd-dncachememsize Nsslapd-dncachememsize: dn_cache_size
不必要なサービスの無効化およびデータベースロックの調節
- MemberOf および Schema Compatibility プラグインを無効にします。
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
dn: cn=Schema Compatibility,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
MemberOf を無効にすると、プロビジョニングが大幅に加速されます。また、 Schema Compatibility を無効にすると、操作の時間を短縮することができます。ldapmodifyユーティリティーを使用して LDAP 属性を変更する例は、例36.1「ldapmodifyを使用した LDAP 属性の変更」を参照してください。 - トポロジーにレプリカがインストールされていない場合には (「一括プロビジョニングの推奨事項と前提条件」で推奨)、Content Synchronization および Retro Changelog プラグインを無効にします。
dn: cn=Content Synchronization,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
dn: cn=Retro Changelog Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: off
これらのプラグインを無効にすると、プロビジョニングのパフォーマンス向上に役立ちます。 - IdM サーバーを停止します。これにより、DS インスタンスも停止されます。
# ipactl stop
次の手順でデータベースのロックの数を設定するには、DS を停止する必要があります。後で DS を再起動します。 - データベースロックの数を調節します。プロビジョニングのエントリー数の半分が適切な値です。
- 最小値は 10,000 です。
- 最大値は 200,000 です。
DS が停止されたので、/etc/dirsrv/slapd-EXAMPLE-COM/dse.ldifファイルを編集して値を設定する必要があります。dn: cn=config,cn=ldbm database,cn=plugins,cn=config ... nsslapd-db-locks: db_lock_number
IdM は、メンバーシップのコンピューティングの際には、大容量のデータベースページにアクセスします。アクセスするページが多いと、プロビジョニングに必要なロックも増えます。 - DS を起動します。
# systemctl start dirsrv.target
エントリーのインポート
LDIF ファイルから IdM LDAP インスタンスに新規エントリーをインポートするには、
ldapadd ユーティリティーなどを使用します。
# ldapadd -D "binddn" -y password_file -f ldif_file
ldapadd の使用方法については、ldapadd(1) の man ページを参照してください。
無効にしたサービスの再有効化および元の属性値の復元
- MemberOf を有効にします。
dn: cn=MemberOf Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
ldapmodifyユーティリティーを使用して LDAP 属性を変更する例は、例36.1「ldapmodifyを使用した LDAP 属性の変更」を参照してください。 - DS を再起動します。
# systemctl restart dirsrv.target
MemberOf を以前の手順で有効化したので、この時点で DS を再起動する必要があります。 fixup-memberof.plのスクリプトに(objectClass=*)フィルターを使用して実行し、全プロビジョニングエントリーのmemberOf属性を再生成、更新します。以下に例を示します。# fixup-memberof.pl -D "cn=directory manager" -j password_file -Z server_id -b "suffix" -f "(objectClass=*)" -P LDAP
エントリーのインポートの際に、MemberOf プラグインを無効にしたので、fixup-memberof.plを実行する必要があります。スクリプトが正しく完了しないと、プロビジョニングを続行できません。fixup-memberof.plの詳細は、fixup-memberof.pl(8) の man ページを参照してください。- Schema Compatibility プラグインを有効にします。
dn: cn=Schema Compatibility,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- Content Synchronization および Retro Changelog プラグインを「不必要なサービスの無効化およびデータベースロックの調節」で無効にした場合には、有効化しなおしてください。
dn: cn=Content Synchronization,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
dn: cn=Retro Changelog Plugin,cn=plugins,cn=config changetype: modify replace: nsslapd-pluginEnabled nsslapd-pluginEnabled: on
- 「現在の DS チューニングパラメーター値のバックアップ」でバックアップしたデータベースキャッシュ、エントリーキャッシュ、DN キャッシュサイズの元の値を復元します。
dn: cn=config,cn=ldbm database,cn=plugins,cn=config changetype: modify replace: nsslapd-dbcachesize nsslapd-dbcachesize: backup_db_cache_size dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config changetype: modify Replace: nsslapd-dncachememsize Nsslapd-dncachememsize: backup_dn_cache_size - replace: nsslapd-cachememsize nsslapd-cachememsize: backup_entry_cache_size
- DS を停止します。
# systemctl stop dirsrv.target
- 「現在の DS チューニングパラメーター値のバックアップ」でバックアップしたデータベースロックの元の値を復元します。DS が停止されたので、
/etc/dirsrv/slapd-EXAMPLE-COM/dse.ldifファイルを編集して値を設定する必要があります。dn: cn=config,cn=ldbm database,cn=plugins,cn=config ... nsslapd-db-locks: backup_db_lock_number
- IdM サーバーを起動します。
# ipactl start
これにより、DS を含むすべての IdM サービスが起動します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.