ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。オープンソースの「OpenLDAP」によるディレクトリサーバの構築方法を解説した前連載に続き、その運用方法を紹介していきます。(編集部)
システム管理者は、より投資効果の高いサービスを提供するため、適切にチューニングを行いソフトウェアをより効率よく動作させたい、あるいは、マシンの持つハードウェアリソースをより有効に活用させたいと思うことでしょう。
今回からは、OpenLDAPサーバのパフォーマンスチューニングについて説明していきます。ここでは、OpenLDAPサーバのデフォルトのバックエンドデータベースである、Berkeley DBを採用した構成を想定してのチューニング方法を説明していきます。
まずは、データベースのチューニングで大切な役割を果たすバッファキャッシュについて説明しましょう。
このバッファキャッシュですが、例えばMySQL(InnoDBストレージエンジン)やPostgreSQLといったオープンソースのデータベース、またはほかの商用データベースであっても、代表的なチューニングポイントになります。これは、データを中心に扱うデータベースであればこそ、ファイル上に永続化されたデータやインデックスの取得に、低速なディスクI/Oを避け、より高速なメモリ上にデータ展開しておく設定が好まれるためです。
ライブラリとしてプログラムに組み込まれるBerkeley DBであっても、独立したプロセスとして動作するデータベースと同様に、バッファキャッシュに頻繁に扱うデータを維持しておくことが可能です。具体的には、Berkeley DBの設定ファイルであるDB_CONFIGファイルにバッファキャッシュサイズを指定することで、OpenLDAPサーバの起動時に、エントリ、インデックスといったディレクトリ情報がキャッシュされる領域が設定されます。
Berkeley DBのバッファキャッシュを適切にチューニングするには、OpenLDAPサーバに含まれるDB_CONFIG.exampleを、各バックエンドデータベースのディレクトリに「DB_CONFIG」としてコピーし、set_cachesizeディレクティブにてサイズを調整するといいでしょう。
# cd /usr/local/openldap-2.4.21/var/openldap-data |
set_cachesizeディレクティブの書式は以下のとおりです。空白で区切り、3つのパラメータを指定することができます。
[書式] |
gbytesとbytesを合計した値がBerkeley DBのバッファキャッシュの総量となり、また、その値をncacheで割った値が、1つの領域当たりのバッファキャッシュのサイズとなります。上記の設定例では、論理的に2.5Gbytesのバッファキャッシュが用意され、物理的に3つの領域で構成されることになります。
実際に、set_cachesizeディレクティブに設定するベストの値は、.bdbという拡張子が付くすべてのBerkeley DBファイルの合計サイズとなります。これは、OpenLDAPが利用する可能性のあるすべてのディレクトリ情報を、Berkeley DBのバッファキャッシュに載せてしまおうという考え方です。目安となる値は、あらかじめエントリがロードされ、インデックスが作成されている状態で、次のように求めることができます。
# cd /usr/local/openldap-2.4.21/var/openldap-data |
set_cachesizeディレクティブを利用しない場合、デフォルトのバッファキャッシュは、256kbytesとなります。またBerkeley DBは、500Mbytes未満に設定されたバッファプールサイズに対し、自動的に25%を追加したサイズへ変更します。
次のコマンド例では、Berkeley DBがバッファキャッシュ領域をメモリマップした__db.003ファイルにて、set_cachesizeディレクティブに設定した値と実際に設定される値の関係を確認しています。
# cd /usr/local/openldap-2.4.21 |
Copyright © ITmedia, Inc. All Rights Reserved.