Sun ONE ロゴ     前へ      目次      索引      次へ     
Sun ONE Directory Server インストールおよびチューニングガイド



第 9 章   その他のリソースの使用の管理

キャッシュのサイズ、属性値のインデックス付け、およびログ管理の最適化を行うと、クライアントアプリケーションが使用できる 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 として接続しないようにしてください。

表 9-1    クライアントが使用できるリソースを制限する場合のチューニングの推奨事項 

設定エントリの DN と属性

簡単な説明とチューニングの推奨事項

dn:cn=config

nsslapd-idletimeout

Directory Server がアイドル状態のクライアント接続を閉じる時間を、秒単位で設定する。ここで、「アイドル状態」とは、接続が開いたままの状態にもかかわらず何も操作が要求されないことを意味する。デフォルトでは、時間制限は設定されていない

メッセージングサーバーなど一部のアプリケーションでは、トラフィックが少ないときにアイドル状態のままにする接続のプールを開く場合があるが、これは閉じてはならない。この場合は、アプリケーションをサポートするレプリカを専用にすることが望ましい。レプリカを専用にできない場合は、バインド DN 制限を検討する

いずれの場合でも、ほかのアプリケーションが開いていると予測する接続を閉じないだけの大きな値を設定する。ただし、不正に接続がアイドル状態のままにならないよう小さな値を設定する。最適化テストの開始点として、設定を 120 秒 (2 分) にすることを検討する

dn:cn=config

nsslapd-ioblocktimeout

Directory Server が停止状態のクライアント接続を閉じる時間を、ミリ秒単位で設定する。ここで、「停止状態」とは、サーバーがクライアントへの出力の送信またはクライアントからの入力の読み込みのいずれかをブロックされていることを意味する

特にサービスを不能にする攻撃にさらされている Directory Server インスタンスの場合は、この値をデフォルトの 1,800,000 ミリ秒 (30 分) より小さく設定することを検討する

dn:cn=config,cn=ldbm  database,cn=plugins,cn=config

nsslapd-lookthroughlimit

検索中のマッチングをチェックする候補エントリの最大数を設定する

メッセージングサーバーなど一部のアプリケーションでは、ディレクトリ全体の検索が必要になる場合がある。この場合は、アプリケーションをサポートするレプリカを専用にすることが望ましい。レプリカを専用にできない場合は、バインド DN 制限を検討する

いずれの場合でも、この値をデフォルトの 5000 エントリよりも小さくすることを検討する。ただし、nsslapd-sizelimit のしきい値より小さくしないようにする

dn:cn=config

nsslapd-maxbersize

着信メッセージの最大サイズを、バイト単位で指定する。Directory Server は、この制限より大きいエントリを追加する要求を拒否する

ディレクトリデータの最大エントリサイズを正確に予測できる自信がある場合は、この値をデフォルトの 2097152 (2M バイト) から最大予測ディレクトリエントリのサイズに変更することを検討する

dn:cn=config

nsslapd-maxthreadsperconn

クライアント接続当たりのスレッドの最大数を設定する

メッセージングサーバーなど一部のアプリケーションでは、接続のプールを開き、各接続で多数の要求を行う場合がある。この場合は、アプリケーションをサポートするレプリカを専用にすることが望ましい。レプリカを専用にできない場合は、バインド DN 制限を検討する

一部のアプリケーションが行う接続当たりの要求が多くなると予測する場合は、この値をデフォルトの 5 より大きくすることを検討する。ただし、この値を 10 より大きくしてはならない。通常、接続当たり 10 スレッドを超える指定は推奨されない

dn:cn=config

nsslapd-sizelimit

Directory Server が、検索要求に応答して返すエントリの最大数を指定する

メッセージングサーバーなど一部のアプリケーションでは、ディレクトリ全体の検索が必要になる場合がある。この場合は、アプリケーションをサポートするレプリカを専用にすることが望ましい。レプリカを専用にできない場合は、バインド DN 制限を検討する

いずれの場合でも、この値をデフォルトの 2000 エントリより小さくすることを検討する

dn:cn=config

nsslapd-timelimit

Directory Server が検索要求の処理に使用できる最大時間を、秒単位で設定する

メッセージングサーバーなど一部のアプリケーションでは、非常に大きな検索の実行が必要になる場合がある。この場合は、アプリケーションをサポートするレプリカを専用にすることが望ましい。レプリカを専用にできない場合は、バインド DN 制限を検討する

いずれの場合でも、導入要件を満たす限り、この値をできるだけ小さく設定する。デフォルト値 3600 秒 (1 時間) は、多くの導入の場合、必要以上に大きな値になる。最適化テストの開始点として、設定を 600 秒 (10 分) にすることを検討する

個々の設定属性に関する詳細については、『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』を参照してください。


前へ      目次      索引      次へ     
Copyright 2002-2003 Sun Microsystems, Inc. All rights reserved.