Linux、Solaris、AIX、およびHP-UXシステムでのeDirectoryパフォーマンスの改善

次のセクションでは、UNIXシステム上でeDirectoryのパフォーマンスを改善する方法について説明します。


eDirectoryサーバを微調整する

LinuxおよびSolaris上のNovell eDirectoryは、動的に調整されるスレッドプールを使用して、クライアントの要求を処理します。スレッドプールは自動的に調整され、多くの場合は最適なパフォーマンスが提供されます。ただし、次のパラメータを/etc/nds.confファイルに設定することによって、サーバへの負荷が急激に高くなった場合にスレッドの起動により発生する遅延を回避できます。

パラメータ 説明および推奨される設定

n4u.server.idle-threads

最小スレッド数(アクティビティとは無関係)。

このパラメータ値は、クライアントアクティビティが通常の場合に、新しいスレッドの生成に必要とされる時間を最小にするように、平均クライアント負荷に基づいて決める必要があります。

n4u.server.max-threads

最大スレッド数。

このパラメータ値は、同時にサービスを提供する必要があるクライアントの最大数に基づいて決める必要があり、次のスレッドを考慮することが推奨されます。

  • eDirectoryは、最低でも16のスレッドを必要とします。
  • 255のLDAP接続それぞれに、1つのスレッドが必要です(Monitor Thread: 監視スレッド)。
  • 現在のクライアントのそれぞれに、1つのスレッドが必要です(Worker Thread: 動作スレッド)。

n4u.server.start-threads

eDirectoryの起動時に起動するスレッド数

このパラメータ値は、クライアントアクティビティが通常の場合に、新しいスレッドの生成に必要とされる時間を最小にするように、平均クライアント負荷に基づいて決める必要があります。


eDirectoryのキャッシュを最適化する

Novell eDirectoryでは永続キャッシュを使用しているため、サーバに対して行われた変更はベクトルに保持されます。変更の途中でサーバがクラッシュした場合、サーバが稼働状態に戻ると、eDirectoryはより高速でロードして数秒間で変更を同期させます。Novell eDirectoryは、システムエラーが発生した場合、ロールバックモデルとログファイルを使用してトランザクションをロールフォワードします。

eDirectoryのキャッシュは最初16MBに設定され、その50%がブロックキャッシュに、残りの50%がレコードキャッシュに割り当てられます。15分後、eDirectoryはキャッシュのしきい値を変更し、キャッシュに使用可能な空きメモリの51%まで初期化できるようにしますが、少なくとも24MBはOS用に残します。このアルゴリズムは、使用可能な空きメモリ量を判別できるようにするコールをホストOSがサポートしている場合のみ使用されます。

eDirectoryキャッシュの最適化は、次の方法で行えます。


UNIXシステムにおける固定量のRAM使用

上記のアルゴリズムはWindowsおよびNetWareでは有効ですが、UNIXシステムでは機能しません。UNIXシステムでは、OSによって報告される使用可能な空きメモリは、他のオペレーティングシステムよりも少なくなります。これは、UNIX OSがファイルシステムブロック、頻繁に実行するプログラム、ライブラリなどの内部キャッシング用に空きメモリを使用するためです。このメモリ割り当てに加え、通常、UNIX上のライブラリは解放されたメモリをOSに戻しません。

このような理由で、キャッシュには固定量のRAMを割り当てることをお勧めします。

UNIXシステムで固定量のRAMを割り当てるには、次のいずれかの操作を行います。


手動で.iniファイルを作成する
  1. eDirectoryデータベースファイル(DIBセット)が格納されたディレクトリ(通常、/var/nds/dib)と同じディレクトリに、_ndsdb.iniという名前のファイルを作成します。

  2. 次に示すパラメータを、_ndsdb.iniフィアルに追加します。

    パラメータ 説明

    blockcachepercent=50

    データベースブロックのキャッシングに割り当てるキャッシュの割合を設定します。

    cacheadjustinterval=15

    eDirectoryが空きメモリの利用状況を評価し、全体のキャッシュサイズを調整する時間(秒)を設定します。

    cachecleanupinterval=15

    eDirectoryがダーティキャッシュブロックをディスクに書き込む時間(秒)を設定します。

    cache=16777216

    ハードメモリ制限(バイト数)を設定します。


Novell iMonitorを使用する
  1. [エージェント環境設定]Agent Configuration buttonをクリックします。

  2. [データベースキャッシュ]をクリックし、次の情報を確認します。

    データベースキャッシュ情報 説明

    最大サイズ

    指定したキャッシュが拡張できる最大サイズ(KB)です。

    現在のサイズ

    指定したキャッシュの現在のサイズ(KB)です。

    キャッシュされたアイテム

    指定したキャッシュ内のアイテム数です。

    キャッシュされた古いバージョン

    指定したキャッシュ内の古いバージョンの数です。古いバージョンのキャッシュアイテムは、データベースの読み込みトランザクションの整合性を維持するために保持されます。つまり、あるスレッドが読み込みトランザクションを実行しており、別のスレッドが書き込みトランザクションを実行している場合、書き込みによって変更されるブロックの古いバージョンが読み込み操作のために保持されます。これは、読み込みのトランザクションを実行している間に変更処理が発生したとしても、読み込みの表示結果に整合性があるようにするためです。

    古いバージョンのサイズ

    キャッシュされる古いバージョンのアイテムサイズ(KB)です。

    ヒット

    指定したキャッシュ内のアイテムに正常にアクセスできた回数です。

    ヒット表示

    指定したキャッシュ内で、アイテムに正常にアクセスする前に参照されたアイテム数です。ヒット表示とヒットの比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。

    失敗

    アイテムが指定したキャッシュ内に見つからず、低いレベルのキャッシュまたはディスクから取得されなければならなかった回数です。

    失敗表示

    必要なアイテムが指定したキャッシュ内にないと判断されるまでに、キャッシュ内で参照されたアイテムの数です。失敗表示と失敗の比率が、キャッシュ検索効率の目安となります。通常、この比率はほぼ1:1になるようにします。

  3. 次のオプションから選択します。

    オプション 説明

    ダイナミック調整

    eDirectoryデータベースのキャッシュに使用するシステムメモリの大きさを、必要と判断される大きさと、次に示すパラメータに基づいて動的に調整します。

    キャッシュ調整パーセンテージ

    レコードキャッシュおよびブロックキャッシュに使用可能なメモリの割合です。

    キャッシュサイズの制約条件

    ダイナミック調整で、指定した制約条件に従います。つまり、キャッシュのメモリの大きさを指定した大きさより小さくせず、使用可能なメモリの合計から指定した大きさを引いた値より大きくしません。

    ハードメモリ制限

    キャッシュに使用するシステムメモリの正確な大きさです。

    キャッシュ最大サイズ

    レコードキャッシュとブロックキャッシュを合わせたサイズ(KB)です。

    ブロックキャッシュパーセンテージ

    ブロックキャッシュに割り当てられる使用可能なシステムメモリの割合です。残りの割合が、レコードキャッシュに割り当てられます。

    キャッシュ調整間隔

    この間隔は、ダイナミック調整を設定している場合のみ使用されます。調整間隔は、指定したパーセンテージと制約条件に基づき、どれくらいの頻度でキャッシュサイズを調整するかを制御します。

    キャッシュクリーンアップ間隔

    どれくらいの頻度で古い未使用のバージョンをキャッシュから削除するかを制御します。

    永続的なキャッシュ設定

    このオプションを選択すると、iMonitorを使用して送信した変更は、前に保存した設定やデフォルトのシステム設定に上書きされ、永続的な変更になります。

  4. [送信]をクリックします。


キャッシュパラメータの設定

デフォルトでは、eDirectoryは動的キャッシュを使用します。eDirectoryのキャッシュサイズの増加に使用できる十分なRAMがある場合は、eDirectoryキャッシュへのRAMの割り当てを増加することによって、大容量データベースを使用する場合のeDirectoryのパフォーマンスを大幅に向上できます。

次の表に示すパラメータを調整すれば、eDirectoryのパフォーマンスを向上できます。

eDirectoryキャッシュパラメータ 説明

blockcachepercent=value

データベースブロックのキャッシングに割り当てるキャッシュの割合を設定します。デフォルトは50です。

cachecleanupinterval=value

eDirectoryがダーティキャッシュブロックをディスクに書き込む時間(秒)を設定します。デフォルトは15です。

cacheadjustinterval=value

eDirectoryが空きメモリの利用状況を評価し、全体のキャッシュサイズを調整する時間(秒)を設定します。デフォルトは15です。

cache=value

eDirectoryがキャッシングに使用できるメモリのハード制限(バイト数)を設定します。

cache=leave:value

使用可能量として残しておく最小バイト数を指定します。

min:value

最小キャッシュサイズをバイト数で指定します。

max:value

最大キャッシュサイズをバイト数で指定します。

このアルゴリズムに従うと、Novell eDirectoryのデフォルト設定は次のようになります。

cache=dyn,%:51,min:16777216,max:0,leave:0

この設定は、次のことを示しています。

eDirectoryが合計メモリの割合を使用するように設定することもできます。これを行うには、次のようにキャッシュを指定します。

cache=hard,total,%:percentage_of_total_memory_in_bytes

データのバルクロードを最適化する

インポート/エクスポート変換(ICE)ユーティリティを使用するバルクロードのパフォーマンスは、アイテムの数によって影響されることがあります。パフォーマンス低下の最も一般的な原因には、ディスクI/Oの管理不良やNovell eDirectoryキャッシュのメモリ割り当て不足があります。

eDirectoryが実質的な唯一のアプリケーションである場合、eDirectoryキャッシュを合計メモリの80%まで設定できます。割り当てられたキャッシュは、最終的にはすべてが使用されます。高揮発性のデータを処理している場合、eDirectoryのパフォーマンスはキャッシュ量を増やすことで向上します。

重要:  サーバがeDirectory以外のアプリケーションやサービスのホストサーバとなっている場合は、合計メモリの40%を超えるキャッシュメモリサイズを設定しないでください。テスト済みの最小キャッシュサイズは0で、最大キャッシュサイズは3GBです。適切なキャッシュサイズは、同じサーバで実行される他の処理が必要とするメモリ量、および必要とするディスクキャッシュ量を基に決める必要があります。色々なキャッシュサイズを試してみて、最適なキャッシュサイズを決めてください。

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

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


LBURPトランザクションサイズを最適化する

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

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


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

トランザクションサイズを変更するには、/etc/nds.confファイルでn4u.ldap.lburp.transizeパラメータの値を変更します。

理想的なシナリオでは、トランザクションサイズが大きいほど、パフォーマンスはより高くなります。ただし、次の理由のため、トランザクションサイズには必要以上に大きな値を設定しないようにします。


Novell eDirectory用にSolaris OSをチューニングする

次のセクションでは、Solarisのカーネル、ネットワーク、およびファイルシステムのチューニング方法について説明します。

重要:  最初に、推奨されているパッチをSolaris OSに適用済みであることを確認します。詳細については、『Novell eDirectory 8.7.3インストールガイド』の「Novell eDirectoryのSolarisへのインストールまたはアップグレード」を参照してください。


Solarisカーネルをチューニングする

Solaris上のeDirectoryパフォーマンスを最適化するには、/etc/systemファイルで次のカーネル変数を設定します。

パラメータ 説明

set maxphys=1048576

1回のSCSI転送で転送できる最大バイト数です。

set md_maxphys=1048576

DiskSuite、vol_maxio、またはVxVMを使用している場合の、1回のSCSI転送で転送できる最大バイト数です。

set ufs:ufs_LW=1/128_of_available_memory

1つのファイルに対する未処理バイト数の境界値です。これを下回ると、他の処理が休眠状態となっている原因の条件変数が切り替えられます。

set ufs:ufs_HW=1/64_of_available_memory

1つのファイルの書き込み失敗境界値に対する未処理バイト数です。

ctcp:tcp_conn_hash_size=8192

カーネルのデータ構造を検索するために割り当てられた、TCP接続に関連する接続ハッシュエントリの数です。(この数は、LDAPクライアントの数に応じて262144まで大きくできます)。


Solarisネットワークをチューニングする

LDAPの検索パフォーマンスは、Solarisのnddコマンドを使用して改善できます。次に示すコマンド構文を使用すれば、ネットワークの操作や動作に影響する、チューニング可能なパラメータを分析し、変更できます。

ndd -set /dev/tcp variable_name variable_value

変数の推奨値を次の表に示します。

パラメータ 説明

tcp_conn_req_max_q: 1024

「q」はキューを表します。これは完成されたソケットで、ペンを保持し、アプリケーションが受諾を発行するまでソケットは存続します。

tcp_time_wait_interval: 60000

待機間隔(ここでは小さな値)を設定します。

tcp_xmit_hiwat: 64000

tcp_xmit_lowat: 64000

TCPの最大および最小送信ウィンドウサイズを調整します。

tcp_slow_start_initial: 2

最初の転送パケット数を1から2に調整します。


Solarisファイルシステムを微調整する

Solarisファイルシステムが適切にチューニングされると、Solaris上のNovell eDirectoryのパフォーマンスが改善されます。特に、ディレクトリへデータをバルクロードする場合のパフォーマンスが非常に向上します。eDirectoryのファイルシステムチューニングは、データベースのチューニングと類似しています。Solarisファイルシステムの詳細については、Sunworld*のWebサイトを参照してください。