eDirectoryのパフォーマンスの改善

eDirectory 8.8では、バルクロードのパフォーマンスを向上させるための新しいオプションが用意されています。

バルクロードのパフォーマンスを向上させるためにNovellインポート/エクスポート変換ユーティリティを使用して調整可能なパラメータは次のとおりです。

各オペレーティングシステムの調整可能パラメータも参照してください。


eDirectoryキャッシュの設定

パフォーマンス低下の最も一般的な原因には、ディスクI/Oの管理不良やeDirectoryキャッシュのメモリ割り当て不足があります。eDirectoryが実質的に唯一のアプリケーションである場合は、eDirectoryのキャッシュを最大で2.5GBに設定できます。割り当てられたキャッシュは、最終的にはすべてが使用されます。高揮発性のデータを処理している場合、eDirectoryのパフォーマンスはキャッシュ量を増やすことで向上します。

キャッシュは100MB〜2.5GBの範囲で設定できます。通常、DIBの3倍から4倍以上のサイズが必要になることはありません。DIBのサイズが大きい場合でも、キャッシュは2GBまでにしてください。

テスト済みの最小キャッシュサイズは0で、最大キャッシュサイズは2.5GBです。適切なキャッシュサイズは、同じサーバで実行される他の処理が必要とするメモリ量、および必要とするディスクキャッシュ量を基に決める必要があります。色々なキャッシュサイズを試してみて、最適なキャッシュサイズを決めてください。

バルクロードのパフォーマンスを最適にするには、eDirectoryキャッシュの割り当てで、ブロックキャッシュにより高い割り当て率を設定します。90%に設定することをお勧めします。この設定は、処理が完了した後でリセットできます。

iMonitorを使用すれば、最も迅速にblockcachepercentageパラメータを変更できます。この作業を行う方法については、Novell iMonitor 2.1の使用を参照してください。

詳細については、『Novell(R) eDirectory 8.7.1:Linux*およびUNIX*のパフォーマンスチューニング』の「キャッシュサブシステムのチューニング」を参照してください。


LBURPトランザクションサイズの設定

LBURPトランザクションサイズによって、1つのトランザクションにおいてICEからLDAPサーバに送信されるレコード数が設定されます。十分なメモリがあり、この値を大きくしてもI/O競合が発生しない場合、この値を大きくすることでバルクロードのパフォーマンスを向上できます。

デフォルトのLBURPトランザクションサイズは25です。この値はLDIFファイルが少ない(操作数が100,000より少ない)場合には適切ですが、レコード数が多い場合には不適切です。LBURPトランザクションサイズは、1〜350の範囲で設定できます。


トランザクションサイズの変更

トランザクションサイズを変更するには、/etc/opt/novell/eDirectory/conf/nds.confファイルでn4u.ldap.lburp.transizeパラメータの値を変更します。理想的なシナリオでは、トランザクションサイズが大きいほど、パフォーマンスはより高くなります。ただし、次の理由のため、トランザクションサイズには必要以上に大きな値を設定しないようにします。

  • トランザクションサイズが大きいほど、サーバはトランザクションを処理するためにより多くのメモリを割り当てる必要があります。システムが少ないメモリで稼働している場合、スワッピングのために処理が遅くなることがあります。
  • LDIFファイルにエラーがなく、eDirectoryにある既存のエントリがコメント化されていることが必要です。トランザクションに1つでもエラーがあると(追加しようとしたオブジェクトがすでにディレクトリに存在するという場合も含めて)、eDirectoryはLBURPトランザクション設定を無視し、操作ごとにコミットを実行してデータの整合性を確認します。

    詳細については、「LDIFファイルのデバッグ」を参照してください。

  • LBURPの最適化は、リーフオブジェクトに対してのみ有効です。トランザクションにコンテナオブジェクトとそのサブオーディネートオブジェクトが含まれている場合、eDirectoryはこれをエラーと見なします。これを回避するには、最初に別のLDIFファイルを使用してコンテナオブジェクトをロードするか、前方参照の使用を有効にします。

    詳細については、『Novell eDirectory 8.8 Troubleshooting Guide』の「前方向参照の有効化」を参照してください。


ICEの非同期要求の数を増やす

これは、LDAPサーバから結果が返されるまでにICEクライアントからサーバに非同期で送信できるエントリ数を意味します。

非同期要求の数は、10〜200の範囲で設定できます。デフォルト値は100です。最小値(10)よりも小さい値はデフォルトに戻されます。小さなLDIFファイルには最小値が適切です。

理想的なシナリオでは、ウィンドウサイズが大きいほど、パフォーマンスはより高くなります。ただし、ウィンドウサイズが大きくなるほど、クライアントがLDIFファイルのエントリを処理するために割り当てるメモリの量が多くなるため、ウィンドウサイズを必要以上に大きく設定しないでください。システムが少ないメモリで稼働している場合、スワッピングのために処理が遅くなることがあります。

ICEの非同期要求の数を変更するには、ICEコマンドラインオプションまたはiManagerを使用します。


ICEコマンドラインオプションを使用する場合

非同期要求の数は、ICEコマンドラインオプション?Zを使って指定できます。これは、LDAPターゲットハンドラの一部として使用できます。

ICEクライアントによって送信される非同期要求の数を50に設定するには、次のコマンドを入力します。

ice -SLDIF -f LDIFファイル -a -c -DLDAP -d cn=admin,o=novell -Z50 -w パスワード


iManagerのICEウィザードを使用する場合

ICEクライアントによって送信される非同期要求の数をiManagerで設定する方法は次のとおりです。

  1. [役割およびタスク]ボタン[役割]アイコンをクリックします。

  2. [eDirectoryの保守]>[インポート/エクスポート変換ウィザード]の順にクリックします。

  3. データをファイルからインポートするタスクとLDAPサーバ間でデータを移行するタスクの両方で、LDAPターゲットハンドラ画面の[LBURPウインドウサイズ]フィールドに値を入力します。

  4. [次へ]をクリックします。

    詳細については、ウィザードのヘルプを参照してください。


LDAP書き込みスレッド数の増加

LDAPサーバで複数の書込みスレッドを使えるようになりました。同時処理によって発生するエラーを避けるために前方参照を有効にするには、次のようにICEコマンドラインオプション?Fを使用します。

ice -SLDIF -f LDIFファイル -a -c -DLDAP -d cn=admin,o=novell -w パスワード  -F


ICEのスキーマ検証を無効にする

ICEクライアントのスキーマ検証を無効にするには、次のようにICEコマンドラインオプション?Cと?nを使用します。

ice -C -n -SLDIF -f LDIFファイル -a -c -DLDAP -d cn=admin,o=novell -w パスワード


ACLテンプレートを無効にする

バルクロードのパフォーマンスを向上させるために、ACL(アクセス制御リスト)テンプレートを無効にすることができます。これによりいくつかのACLが見つからなくなりますが、必要なACLをLDIFファイルに追加するか、それらのACLを後から適用することで、この問題は解決できます。

  1. 次のコマンドを実行します。

    ldapsearch -D 管理者のCN -w パスワード -b cn=schema -s base objectclasses=inetorgperson 

    このコマンドの出力は次のようになります。

    dn:cn=schemaobjectClasses:( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP 
    organizationalPerson STRUCTURAL MAY ( groupMembership $ ndsHomeDirectory
    $ loginAllowedTi meMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRem aining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTim e $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestri ction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $passwordMinimumLength $ passwordRequired $
    passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimum AccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate
    $nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUS AttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory
    $ rADIUSDefa ultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $ rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense $ departmentNumbe r $ employeeNumber $ employeeType $
    givenName $ homePhone $ homePostalAddress $ initials $ jpegPhoto $
    labeledUri $ mail $ manager $ mobile $ pager $ ldap Photo $
    preferredLanguage $ roomNumber $ secretary $ uid $ userSMIMECertifica te
    $ x500UniqueIdentifier $ displayName $ userPKCS12 ) X-NDS_NAME 'User' X
    -NDS_NOT_CONTAINER '1' X-NDS_NONREMOVABLE '1' X-NDS_ACL_TEMPLATES ( '2#subtree#[Self]#[All Attributes Rights]' '6#entry#[Self]#loginScript' '1#subtree#[Root Template]#[Entry Rights]' '2#entry#[Public]#messageServer' '2#entry#[Root Template]#groupMembership' '6#entry#[Self]#printJobConfiguration' '2#entry#[Root Template]#networkAddress') )
  2. この出力から、太字で示されている情報を削除します。

  3. 変更を加えた出力をLDIFファイルとして保存します。

  4. 新しく保存したLDIFファイルに次の情報を追加します。

    dn:cn=schemachangetype:modifydelete:objectclassesobjectclasses:( 2.16.840.1.113730.3.2.2 )-add:objectclasses

    これにより、新しいLDIFは次のようになります。

    dn:cn=schemachangetype:modifydelete:objectclassesobjectclasses:( 2.16.840.1.113730.3.2.2 )-add:objectclassesobjectClasses:( 2.16.840.1.113730.3.2.2 NAME 'inetOrgPerson' SUP 
    organization alPerson STRUCTURAL MAY ( groupMembership $ ndsHomeDirectory
    $ loginAllowedTimeMap $ loginDisabled $ loginExpirationTime $
    loginGraceLimit $ loginGraceRem aining $ loginIntruderAddress $
    loginIntruderAttempts $ loginIntruderResetTime $
    loginMaximumSimultaneous $ loginScript $ loginTime $
    networkAddressRestri ction $ networkAddress $ passwordsUsed $
    passwordAllowChange $ passwordExpirationInterval $
    passwordExpirationTime $ passwordMinimumLength $ passwordRequired
    $passwordUniqueRequired $ printJobConfiguration $ privateKey $ Profile $
    publicKey $ securityEquals $ accountBalance $ allowUnlimitedCredit $
    minimum AccountBalance $ messageServer $ Language $ UID $
    lockedByIntruder $ serverHolds $ lastLoginTime $ typeCreatorMap $
    higherPrivileges $ printerControl $ securityFlags $ profileMembership $
    Timezone $ sASServiceDN $ sASSecretStore $ sASSecretStoreKey $
    sASSecretStoreData $ sASPKIStoreKeys $ userCertificate $
    nDSPKIUserCertificateInfo $ nDSPKIKeystore $ rADIUSActiveConnections $
    rADIUSAttributeLists $ rADIUSConcurrentLimit $ rADIUSConnectionHistory $
    rADIUSDefa ultProfile $ rADIUSDialAccessGroup $ rADIUSEnableDialAccess
    $rADIUSPassword $ rADIUSServiceList $ audio $ businessCategory $
    carLicense
    $ departmentNumbe r $ employeeNumber $ employeeType $ givenName $
    homePhone $ homePostalAddress $ initials $ jpegPhoto $ labeledUri $ mail
    $ manager $ mobile $ pager $ ldap Photo $ preferredLanguage $ roomNumber
    $ secretary $ uid $ userSMIMECertifica te $ x500UniqueIdentifier $
    displayName $ userPKCS12 ) X-NDS_NAME 'User' X-ND S_NOT_CONTAINER '1' X
    -NDS_NONREMOVABLE '1' )
  5. 次のコマンドを入力します。

    ldapmodify -D 管理者のCN -w パスワード -f LDIFファイル名


バックリンカ

バックリンカは、特に参照整合性をチェックするバックグラウンドプロセスであり、eDirectoryサーバが起動してから50分後に実行されます。その後は13時間後に実行されます。バルクロードの処理中にバックリンカが実行されないように注意してください。ロードされるオブジェクトの数やオブジェクトがロードされる回数によっては、バックリンカが実行されると、バルクロードの処理速度が低下することがあります。


インラインキャッシュを有効/無効にする

サーバのインラインキャッシュ変更を有効または無効にできます。インラインキャッシュ変更は、アウトバウンド同期が無効になっている場合のみ、無効にできます。アウトバウンド同期を有効にすると、インラインキャッシュ変更も有効になります。

インラインキャッシュ変更を無効にすると、このレプリカの変更キャッシュが無効としてマークされ、[エージェント環境設定]>[パーティション]に無効なフラグが付けられます。インラインキャッシュ変更を有効にすると、変更キャッシュの再構築時に、無効な変更キャッシュのフラグが削除されます。


LBURPのタイムアウト周期の拡大

デフォルトでは、クライアントのタイムアウト周期は20分(1200秒)です。ただし、バルクロードの処理の際、LBURPトランザクションサイズが250であり、非常に大きな値を持つ多数の属性が対象であり、しかも、サーバで同時LBURP処理が有効になっている場合、サーバはICEクライアントによって送信されるデータを処理するために使用中になり、クライアントへの応答は規定の時間内に行われません。この場合、ICEクライアントはタイムアウトになります。

このため、タイムアウト周期を拡大することをお勧めします。タイムアウト周期を拡大するには、環境変数LBURP_TIMEOUTに大きな値(秒)を設定してエクスポートします。

たとえば、LBURP_TIMEOUT変数に1200秒を設定してエクスポートするには次のように入力します。

export ICE_LBURP_TIMEOUT=1200