Sun ONE Directory Server インストールおよびチューニングガイド |
キャッシュのサイズ、属性値のインデックス付け、およびログ管理の最適化を行うと、クライアントアプリケーションが使用できる Directory Server のリソースを制限する方法や Directory Server がシステムリソースを使用する方法を調整することが有用であることがわかります。また、Directory Server プラグインとして提供される機能の一部を再設定したり、無効にしたりすることも有用だとわかるでしょう。
クライアントが使用できるリソースの制限
デフォルトでは、実際に必要となる Directory Server リソースよりも多くのリソースをクライアントが使用できるように設定されている場合があります。これは、クライアントアプリケーションが、多数の接続を開いてそのままアイドル状態にし、あるいは未使用のままにしたり、コストがかかる不必要なインデックスを使用しない検索を行なったり、ディレクトリに大量で無計画なバイナリ属性値の格納を行なったりして、無意識のうちに、あるいは故意にサーバーのパフォーマンスに悪い影響を与える可能性をそのまま残しておくことになります。
導入状況によっては、デフォルト設定の変更をお勧めできない場合があります。この節で説明する設定属性値を変更しないような導入の場合は、Sun ONE Directory Proxy Server ソフトウェアを使用して、外部から制限を設定し、サービスを不能にする攻撃を防ぐことを検討します。
導入状況によっては、Directory Server のインスタンスが、メッセージングサーバーなどディレクトリに負荷のかかるクライアントアプリケーションとユーザーメールアプリケーションなど一時的にディレクトリを使用するクライアントの両方をサポートする必要があります。このような場合には、『Sun ONE Directory Server 管理ガイド』で説明するように、バインド DN リソース制限を使用して、ディレクトリに負荷のかかるアプリケーションに対して個別に制限を高めることを検討します。
表 9-1 の推奨事項は、すべてのクライアントアプリケーションが使用できるリソースを制限するための設定を示しています。これらの制限は Directory Manager には適用されないため、クライアントアプリケーションが決して Directory Manager として接続しないようにしてください。
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
使用可能なシステムリソースの使用
導入要件によっては、Directory Server インスタンスがシステムリソースとネットワークリソースを使用する方法、アクセス制御を管理する方法、およびサーバープラグインを設定する方法を調整することができます。表 9-2 の推奨事項は、システムリソースの設定を示しています。
表 9-2    システムリソースの使用を設定する場合のチューニングの推奨事項
属性 (dn: cn=config)
簡単な説明とチューニングの推奨事項
nsslapd-listenhost
Directory Server が待機する IP インタフェースのホスト名を設定する。この属性は単一値である
デフォルトの動作はすべてのインタフェースで待機する。このデフォルトの動作は、可用性とスループットのために、冗長ネットワークインタフェースを使用する大規模システムの導入に適合する
マルチホームシステムを導入したり、あるいは別のインタフェースを介して個々のプロトコルをサポートするシステムの IPv4 や IPv6 だけを待機したりする場合に、この値の設定を検討する。SSL を使用する場合は、nsslapd-securelistenhost の設定を検討する
nsslapd-maxdescriptors
Directory Server が使用を試みるファイル記述子の最大数を設定する
Directory Server は、ファイル記述子を使用して、クライアント接続を処理し、ファイルを内部的に管理する。ファイル記述子が不足しているため、Directory Server が新しい接続の待機を中止する場合があることを、エラーログが示す場合は、この属性の値を大きくして、Directory Server が同時に処理できるクライアント接続の数を増加する
「ファイル記述子」で説明する手順に従って、システムで使用可能なファイル記述子の数を増加させた場合は、それに応じてこの属性値を設定する。この属性値は、システムで使用可能なファイル記述子の最大数以下にする必要がある
nsslapd-nagle
TCP パケットの送信を、ソケットレベルで遅延させるかどうかを設定する
off (デフォルト) のままにして、クライアントアプリケーションへの結果の送信がプロトコルレベルで遅延しないようにする
nsslapd-reservedescriptors
Directory Server がインデックス付け、レプリケーション、およびその他の内部処理を管理するために保持するファイル記述子の数を設定する。これらのファイル記述子は、クライアント接続を処理するために Directory Server で使用されることはない
次の条件がすべて当てはまる場合は、この属性の値をデフォルトの 64 から増やすことを検討する
- Directory Server が 10 を超えるコンシューマをレプリケートするか、または Directory Server が 30 を超えるインデックスファイルを管理する
- Directory Server が、多数のクライアント接続を処理する
- エラーログのメッセージによると、クライアント接続に無関係の操作のために、Directory Server がファイル記述子を使い果たしている
予備ファイル記述子の数が増加するにつれて、クライアント接続の処理に使用できるファイル記述子の数が減少することに注意する。この属性の値を増加させる場合は、システムで使用可能なファイル記述子の数の増加、および nsslapd-maxdescriptors の値の増加を検討する
この属性を変更する場合、予備のファイル記述子数の最初の見積もりとして、nsslapd-reservedescriptors の値を次の計算式のように設定することを試みる
20 + 4 * (データベース数) + (インデックス総数) + (nsoperationconnectionslimit の値) * (連鎖バックエンド 数) + ReplDescriptors + PTADescriptors + SSLDescriptors
ここで、ReplDescriptors は、サプライヤレプリカの数 + レプリケーションが使用されている場合 8、PTADescriptors は、PTA (パススルー認証) プラグインが有効の場合 3 (無効の場合は 0)、SSLDescriptors は、SSL が使用されている場合 5 (使用されていない場合 0) を示す
インスタンスがサフィックス当たり 1 データベースを超えて使用するように設定されていない限り、データベースの数はインスタンスのサフィックスの数と同一である。経験的テストを通じて見積もりを検証する
nsslapd-securelistenhost
Directory Server が SSL 接続を待機する IP インタフェースのホスト名を設定する。この属性は単一値である
デフォルトの動作ではすべてのインタフェースで待機する。この属性は nsslapd-listenhost と同じ方法で検討する
nsslapd-threadnumber
Directory Server が使用するスレッドの数を設定する
次の条件のいずれかに当てはまる場合は、この属性の値を調整することを検討する
- クライアントアプリケーションが、更新や複雑な検索を同時に行う場合など多くの時間のかかる操作を実行する
- Directory Server が多くの同時クライアント接続をサポートする
- Directory Server が 5,000,000 を超えるエントリを処理する
マルチプロセッサシステムは、単一プロセッサシステムより大きなスレッドプールを保持できる。この属性の値を最適化するときの最初の見積もりとして、「プロセッサ数の 2 倍」または「同時更新数 + 20」を使用する。表 9-1 の説明に従って、クライアント接続当たりのスレッドの最大数 nsslapd-maxthreadsperconn の調整も検討する。クライアント接続を処理するこれらのスレッドの最大数は、システムで使用可能なファイル記述子の最大数を超えることはできない。この属性の値は、増やすよりもむしろ減らしたほうが、有効である場合がある
経験的テストを通じて見積もりを検証する。結果は、特定の導入状況だけではなく基盤となるシステムにも依存する
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
アクセス制御の管理
Directory Server は、メモリ管理の改善やマクロ ACI (Access Control Instruction) のサポートなど ACI のパフォーマンスと拡張性の向上を実現しました。この改善にもかかわらず、Directory Server は複雑な ACI を評価するためにかなりのシステムリソースを使用します。したがって、複雑な ACI の大量の使用はパフォーマンスに悪い影響を与えることになります。
マクロ ACI は使用する ACI の数の制限に役立ちます。ACI の数を制限することによって、アクセス制御の管理をより簡単にして、システムの負荷を軽減します。マクロは、ACI の中で DN、または DN の一部を表現する可変部分です。マクロは、ACI の対象、ACI のバインドルール、またはその両方で使用できます。Directory Server が要求を受け取ると、要求によって実行される操作のターゲットとなるリソースに一致する ACI マクロをチェックします。マクロが一致する場合、Directory Server は、マクロを実際の DN の値に置き換えます。次に、Directory Server は通常どおり ACI を評価します。ACI の詳細については、『Sun ONE Directory Server 管理ガイド』を参照してください。
テストの結果、Directory Server は 50,000 を超える ACI をサポートできることが実証されました。さまざまな導入例のパフォーマンスに与える影響については、現在分析中です。パフォーマンスに悪い影響を与えず、アクセス制御の管理における複雑さを軽減するために、できるだけ ACI の数を少なくします。複雑な ACI 環境を含む導入の場合は、複数のアクセス制御機能を提供する Sun ONE Directory Proxy Server の使用を検討します。
サーバープラグインの設定
Directory Server は、アクセス制御、レプリケーション、構文検査、および属性一意性検査プラグインなど多くの重要な機能を実装しています。特定の導入では、プラグインの一部を再設定することが有効な場合があります。表 9-3 の推奨事項は、標準プラグインの設定例を示しています。
表 9-3    標準プラグインのチューニング例の推奨事項
名前および DN
簡単な説明とチューニングの推奨事項
7 ビット検査プラグイン
dn:cn=7-bit check,cn=plugins,cn=config
Directory Server が、属性値が 7 ビットクリーンであるかどうかを検査できるようにする。つまり、与えられた属性値には 7 ビット符号化に適合する文字だけが含まれていることを検査する
インフラストラクチャが、たとえば日本語の文字など幅広い符号化をサポートするように設計されている場合は、このプラグインの無効化を選択できる (デフォルトは on)
旧バージョンのレプリケーションプラグイン
dn:cn=Legacy Replication Plugin,cn=plugins,cn=config
Directory Server が、4.X サプライヤのコンシューマとして機能できるようにする
たとえば、アップグレードの間に Directory Server を 4.X サプライヤのコンシューマとして使用しない場合は、このプラグインを off に設定する (4.x レプリケーション機能が必要な場合のデフォルトは on)
参照整合性検査プラグイン
dn:cn=referential integrity postoperation,cn=plugins,cn=config
関連するエントリ間の関係が保持されていることを、Directory Server が確認できるようにする。たとえば、ユーザーエントリがディレクトリから削除されたり、名前が変更されたりしたときに、ユーザーが属するグループがユーザーの介入なしで必要に応じて更新される
すべてのマスターでこのプラグインを有効にして設定する
プラグインを有効にする場合は、プラグインで使用できるように設定するすべての属性の等価インデックスを作成する。プラグインは、更新するエントリを検索するときにこのインデックスを使用する。使用する属性の等価インデックスがない場合、プラグインはパフォーマンスに悪い影響を与え、コストがかかるインデックスを使用しない検索を実行する必要がある
プラグインの設定と有効化の手順については、『Sun ONE Directory Server 管理ガイド』を参照
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。