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

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


eDirectoryサーバを微調整する

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


表 133.

パラメータ 説明

n4u.server.max-threads

スレッドの絶対最大数

n4u.server.idle-threads

アイドル状態に保つスレッド数

n4u.server.start-threads

開始しないでおくスレッド数

n4u.server.max-threadsパラメータの値は、同時にサービスを受ける必要があるクライアントの最大数に基づいて設定します。Novell eDirectoryでは、通常の使用状態で約16スレッドが内部的に必要とされます。LDAP接続を監視するためには、255のLDAP接続ごとに1つのスレッドを追加します。同時にサービスを受ける必要のある4つのクライアントごとにスレッドを1つ追加します。n4u.sserver.idle-threadsおよびn4u.server.start-threadsパラメータの値は、クライアントの平均負荷に基づいて設定します。

多数のLDAPサーバオブジェクトを1つのLDAPグループのメンバーにすることもできます。この場合、すべてのLDAPサーバが、LDAPグループオブジェクトのプロパティ(たとえば、クラスと属性のマッピング、プロキシユーザなど)を共用します。つまり、追加する独自のクラスと属性のマッピングリストがある場合、1つのグループにそれらを追加してすべてのサーバをこのグループのメンバーにすることができます。


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

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

Novell eDirectoryは、キャッシュの使用可能な空きメモリのおよそ50%を使用し、少なくとも24MBをOS用に残しておきます。このアルゴリズムは、使用可能な空きメモリ量を判別できるようにするコールをホストOSがサポートしている場合のみ使用されます。このアルゴリズムはWindowsおよびNetWareでは有効ですが、UNIXシステムでは機能しません。UNIXシステムでは、OSによって報告される使用可能な空きメモリは、他のオペレーティングシステムよりも少なくなります。これは、UNIX OSがファイルシステムブロック、頻繁に実行するプログラム、ライブラリなどの内部キャッシング用に空きメモリを使用するためです。このメモリ割り当てに加え、通常、UNIX上のライブラリは解放されたメモリをOSに戻しません。

このような理由で、キャッシュには固定量のRAMを割り当てることをお勧めします。固定量のキャッシュを割り当てるには、DIB Setディレクトリ(デフォルトでは、/var/nds/dib)に_ndsdb.iniという名前のファイルを作成し、そのファイル内でcacheパラメータの値を指定します。Novell eDirectoryは、このキャッシュをブロックキャッシュとレコードキャッシュに均等になるように割り当てます。cacheパラメータには、絶対値またはカンマで区切った次のパラメータのセットのいずれかを設定できます。


表 134.

eDirectory cacheパラメータ 説明

dyn

動的キャッシュ調整を有効にします(デフォルト)。

hard

ハードメモリ制限を設定します。

avail

使用する利用可能なメモリの割合を指定します。

total

使用する合計メモリの割合を指定します。

%:percentage

使用する割合を指定します。

leave:bytes

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

min:bytes

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

max:bytes

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

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

cache=dyn,avail,%:50,min:8388508,max:4294967295,leave:25165824

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

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

cache=hard,total,%:percentage_of_total_memory_in_bytes


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

デフォルトでは、eDirectoryは動的キャッシュを使用します。eDirectoryのキャッシュサイズの増加に使用できる十分なRAMがある場合は、eDirectoryキャッシュへのRAMの割り当てを増加することによって、大容量データベースを使用する場合のeDirectoryのパフォーマンスを著しく向上させることができます。詳細については、「eDirectoryのキャッシュを最適化する」を参照してください。インポート/エクスポートユーティリティを使用するときのバルクロードのパフォーマンスは、キャッシュサイズによって大きく左右されます(キャッシュが大きいほど高速になります)。

ndstraceコマンドラインで次のコマンドを使用してキャッシュサイズを設定します。

set ndstrace = !m[hexadecimal KB]

または

set ndstrace = !mb[bytes]

たとえば、set ndstrace=!m4F00コマンドは、eDirectoryキャッシュに約20MBのRAMを割り当てます。eDirectoryがサーバの唯一のアプリケーションである場合は、eDirectoryキャッシュを合計メモリの80%まで設定できます。

重要:  サーバがeDirectory以外のアプリケーションやサービスのホストサーバとなっている場合は、合計メモリの40%を超えるキャッシュメモリサイズを設定しないでください。

テスト済みの最小キャッシュサイズは0で、最大キャッシュサイズは2GBです。適切なキャッシュサイズを決めるには、同じサーバで実行される他の処理が必要とするメモリ量、および必要とするディスクキャッシュ量を考慮に入れる必要があります。色々なキャッシュサイズを試してみて、最適なキャッシュサイズを決めてください。基本的に使用する唯一のアプリケーションがeDirectoryの場合は、できるだけ大きなキャッシュ量をNDSに割り当ててください。割り当てられたキャッシュは、最終的にはすべてが使用されます。高揮発性のデータを処理している場合、eDirectoryのパフォーマンスはキャッシュ量を増やすことで向上します。

バルクロードのパフォーマンスを最適にするには、Novell eDirectoryキャッシュの割り当てで、ブロックキャッシュにより高い割り当て率を設定します。ブロックキャッシュに80%の値を設定することをお勧めします。これを設定するには、/var/ndsディレクトリにある_ndsdb.iniファイルでblockcachepercentageパラメータの値を変更します。blockcachepercentageパラメータの値を指定する前に、キャッシュパラメータが設定されている必要があります。


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

LBURPトランザクションサイズによって、1つのLBURPパケットでNovell(R)インポート/エクスポートクライアントからLDAPサーバに送信されるレコードの数が決まります。トランザクションのサイズを増やして、1つの要求で確実に複数の追加操作が実行できます。トランザクションサイズは、/etc/nds.confのn4u.ldap.lburp.transizeパラメータに必要な値を指定することによって変更できます。デフォルトのトランザクションサイズは25です。このデフォルト値は、小さなLDIFファイルには適していますが、レコード数が多いファイルには適していません。1〜250のハードメモリ制限の範囲で、トランザクションサイズを指定できます。

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


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

推奨されているすべてのパッチをSolaris OSに適用済みであることを確認します。詳細については、「Solaris」を参照してください。

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


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

Novell eDirectoryのパフォーマンスを最適化するために、Solarisシステムで/etc/systemファイルの次のカーネル変数を設定できます。

set priority_paging=1
set maxphys=1048576
set md_maxphys=1048576
set ufs:ufs_LW=1/128_of_available_memory
set ufs:ufs_HW=1/64_of_available_memoryset tcp:tcp_conn_hash_size=8192 (この値は、LDAPクライアントの数に応じて262144まで増やすことができます。)


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

Solaris nddコマンドを使用してLDAP検索パフォーマンスを向上させることができます。このコマンドにより、ネットワークの操作と動作に影響するチューニング可能なパラメータを解析して、変更できます。これには、次の構文を使用します。

ndd -set /dev/tcp variable_name variable_value

設定可能な変数の推奨値は、次のとおりです。

tcp_conn_req_max_q: 1024
tcp_close_wait_interval: 60000
tcp_xmit_hiwat: 32768
tcp_xmit_lowat: 32768
tcp_slow_start_initial: 2


Solarisファイルシステムをチューニングする

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