第 8 章
ログのチューニング
Directory Server には、表 8-1 に示すように、複数のログタイプが用意されています。この章では、異なるタイプのログを扱う方法について説明します。
表 8-1    Directory Server で使用されるログのタイプ
ログ
|
タイプ
|
使用方法
|
アクセス
|
フラットファイル
|
ディレクトリの評価でパターンを使用して、設定を検証し、アクセス問題を診断する
|
監査
|
フラットファイル
|
セキュリティとデータ整合性の監査証跡を提供する
|
更新履歴ログ
|
データベース
|
レプリカ間の同期を有効にする
|
エラー
|
フラットファイル
|
ディレクトリの導入をデバッグする
|
旧バージョン形式の更新履歴ログ
|
データベース
|
旧バージョンとの下位互換性を許可する
|
トランザクション
|
データベース
|
データベースの整合性を管理する
|
大規模な導入では、ログへの書き込みによりディスクが大量に使用されるため、パフォーマンスに重大な悪影響が生じます。大規模なシステムにおける頻繁なログ記録に伴なう潜在的な I/O ボトルネックに対しては、ログを別のディスクコントローラを使用する別の物理ディスク上に配置することを検討してください。
アクセスログ
アクセスログには、クライアントの接続と実行された操作に関する詳しい情報が記録されます。アクセスログは、アクセス問題の診断、サーバー設定の検証、およびサーバー使用パターンの評価には不可欠です。ただし、デフォルトのログレベルではほとんどの導入で多大なディスクアクセスが発生し、ディスク活動の量がサーバーのパフォーマンスに悪影響を及ぼすおそれがあります。
アクセスログでは有用なトラブルシューティング情報が得られますが、I/O ボトルネックとなる可能性もあります。ディレクトリを導入したらアクセスログは無効にし、エラーやパフォーマンスの問題なく実行することを検討します。アクセスログが実際の運用環境で必要となるときは、ログレベルを最低限必要なレベルに設定します。さらに、アクセスログを専用の物理ディスクか、大きな I/O バッファを持つ高速のディスクサブシステムに配置することを検討します。表 8-2 に、特定の属性に対する詳細な要件を示します。
表 8-2    アクセスログのチューニング要件
設定属性 (dn: cn=config の場合)
|
簡単な説明とチューニングの推奨事項
|
nsslapd-accesslog
|
アクセスログファイルのパスとファイル名を指定する
小規模な導入では、アクセスログは監査ログやエラーログとディスクを共有することも可能
大規模な導入では、アクセスログを専用のコントローラを持つ専用のディスクやディスクサブシステムに配置することを検討する。大きな I/O バッファを持つディスクを選択する
|
nsslapd-accesslog-level
|
ログで使用される情報のレベルを指定する
より高いレベルのログが必要ないなら 0 に変更すると、アクセスログを記録しない (デフォルトは 256 でエントリへのアクセスをログに記録)
|
nsslapd-accesslog-logbuffering
|
アクセスログをバッファに入れるかどうかを決める
生成されたアクセスログメッセージを確認するために、バッファを無効にする必要があるまでは、on (デフォルト) にしておくこと。バッファを無効にすると、全体のパフォーマンスが低下する
|
nsslapd-accesslog-logging-enabled
|
アクセスログを有効または無効にする
最大のパフォーマンスを得るには off にする (デフォルトは on)
導入でアクセスログが有効であることが必要な場合は、nsslapd-accesslog-level を可能な限り低い値に設定にし、アクセスログを専用のディスクやディスクサブシステムに配置する。アクセスログを頻繁に (毎日または毎週) ローテーションし、nsslapd-accesslog-logmaxdiskspace および nsslapd-accesslog-logminfreediskspace を使用してディスク容量の使用状況を管理する
|
nsslapd-accesslog-logmaxdiskspace
|
すべてのアクセスログ、つまり現在のログとローテーションされたログが消費する可能性のある最大ディスク容量を指定する
この値はアクセスログ専用のディスク容量の合計よりも低く設定すること
監査、アクセス、エラーの各ログで同じディスクを使用する場合は、これらの 3 つのログに対して十分なディスク容量があること
アクセスログが専用のディスクにある場合は、この変数をディスクのサイズに設定する
|
nsslapd-accesslog-logminfreediskspace
|
古いログがパージされる前に利用可能な最低限のディスク空き容量を指定する
ディスクの空き容量がこの属性で指定した値を下回った場合、ディスクの空き容量がこの属性の設定に相当するまで、もっとも古いアクセスログから順番に削除される。ディスクがいっぱいでアクセスログに書き込みできない場合、サーバーはシャットダウンする
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
Sun ONE Directory Server Resource Kit のドキュメントではアクセスログからの情報の抽出について扱っています。詳細は、「Directory Server ツールのダウンロード」を参照してください。
監査ログ
監査ログには、サーバーの設定だけでなく、各データベースに対するすべての変更に関する詳細情報が記録されます。監査ログはデフォルトで無効に設定されています。
変更が大量になる導入で有効にすると、監査ログが有効になるため、パフォーマンスが全体的に著しく低下してしまいます。導入で必要となるまで、監査ログは無効にしておきます。監査ログを必要とする大規模な導入の場合は、監査ログ用に別のコントローラ上にある別のディスクを割り当てることを検討します。表 8-3 に、特定の属性に対する詳細な要件を示します。
表 8-3    監査ログのチューニング要件
設定属性 (dn: cn=config の場合)
|
簡単な説明とチューニングの推奨事項
|
nsslapd-auditlog
|
監査ログファイルのパスとファイル名を指定する
小規模な導入では、監査ログはアクセスログやエラーログとディスクを共有することも可能
大規模な導入では、監査ログを専用のコントローラを持つ専用のディスクに配置することを検討する。大きな I/O バッファを持つディスクを選択する
|
nsslapd-auditlog-logging-enabled
|
監査ログを有効または無効にする
監査ログが必要となるまで、off (デフォルト設定) のままにしておく
|
nsslapd-auditlog-logmaxdiskspace
|
すべての監査ログ、つまり現在のログとローテーションされたログが消費する可能性のある最大ディスク容量を指定する
この値は監査ログ専用のディスク容量の合計よりも低く設定すること
監査、アクセス、エラーの各ログで同じディスクを使用する場合は、これらの 3 つのログに対して十分なディスク容量があること
監査ログが専用のディスクにある場合は、この変数をディスクのサイズに設定する
|
nsslapd-auditlog-logminfreediskspace
|
古いログがパージされる前に利用可能な最低限のディスク空き容量を指定する
ディスクの空き容量がこの属性で指定した値を下回った場合、ディスクの空き容量がこの属性の設定に相当するまで、もっとも古い監査ログから順番に削除される。ディスクがいっぱいで監査ログに書き込みできない場合、サーバーはシャットダウンする
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
エラーログ
Directory Server インスタンスのエラーログには、通常のサーバー運用中に発生した詳細エラー、警告、および情報メッセージが含まれます。デフォルトのログレベルは低いため、比較的小さなディスクアクティビティが行われます。
ログレベルを高く設定するとデバッグ情報が生成されますが、Directory Server では、大量のメッセージをディスクに書き込み始めます。書き込みにおける負荷によって、パフォーマンスが全体的に著しく低下します。パフォーマンスの低下を避けるには、一度にすべてのコンポーネントのログレベルをアクティブにするのではなく、ログレベルをコンポーネントごとに段階的に上げていきます。
エラーログではログのバッファをサポートしていません。すべてのメッセージは即座にディスクにフラッシュされます。大規模な導入では、デバッグが必要になるときに、別のコントローラにある別のディスクをエラーログ用に割り当てることを検討します。表 8-4 に、特定の属性に対する詳細な要件を示します。
表 8-4    エラーログのチューニング要件
設定属性 (dn: cn=config の場合)
|
簡単な説明とチューニングの推奨事項
|
nsslapd-errorlog
|
エラーログファイルのパスとファイル名を指定する
小規模な導入では、エラーログはアクセスログや監査ログとディスクを共有することも可能
大規模な導入では、エラーログを専用のコントローラを持つ専用のディスクに配置することを検討する。大きな I/O バッファを持つディスクを選択する
|
nsslapd-errorlog-logging-enabled
|
エラーログを有効または無効にする
on (デフォルト設定) のままにしておくこと
|
nsslapd-errorlog-logmaxdiskspace
|
すべてのエラーログ、つまり現在のログとローテーションされたログが消費する可能性のある最大ディスク容量を指定する
この値はエラーログ専用のディスク容量の合計よりも低く設定すること
監査、アクセス、エラーの各ログで同じディスクを使用する場合は、これらの 3 つのログに対して十分なディスク容量があること
エラーログが専用のディスクにある場合は、この変数をディスクのサイズに設定する
|
nsslapd-errorlog-logminfreediskspace
|
古いログがパージされる前に利用可能な最低限のディスク空き容量を指定する
ディスクの空き容量がこの属性で指定した値を下回った場合、ディスクの空き容量がこの属性の設定に相当するまで、もっとも古いエラーログから順番に削除される。ディスクがいっぱいでエラーログに書き込みできない場合、サーバーはシャットダウンする
|
nsslapd-infolog-area
|
情報メッセージがログに記録されるコンポーネントを指定する
コンポーネントをデバッグするまでは 0 (デフォルト) のままにしておくこと。実際の運用サーバーでは一度に複数のコンポーネントを設定しないこと
|
nsslapd-infolog-level
|
ログで使用される情報のレベルを指定する
nsslapd-infolog-area 単独の設定では十分な詳細を得られないコンポーネントをデバッグするまでは、0 (デフォルト) のままにしておくこと
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
マルチマスターレプリケーションの更新履歴ログ
Directory Server は、レプリケーションの更新履歴ログを使ってレプリカ間の同期を実現します。更新履歴ログについては『Sun ONE Directory Server Deployment Guide』を、設定の詳細については『Sun ONE Directory Server Reference Manual』を、それぞれ参照してください。表 8-5 に、特定の属性に対する詳細な要件を示します。
表 8-5    マルチマスター更新履歴ログのチューニング要件
設定エントリの DN と設定属性
|
簡単な説明とチューニングの推奨事項
|
dn:cn=changelog5,cn=config
nsslapd-cachememsize
|
更新履歴ログデータベースのキャッシュサイズを指定する
大規模な導入では、この属性のデフォルト値 10M バイトの変更を検討する
|
dn:cn=changelog5,cn=config
nsslapd-changelogdir
|
更新履歴ログデータベースのパスとファイル名を指定する
更新履歴ログを専用のコントローラを持つ専用のディスクやディスクサブシステムに配置することを検討する。大きな I/O バッファが有用
|
dn:cn=changelog5,cn=config
nsslapd-changemaxage
|
更新履歴ログ内のエントリの最長保存期間を指定する
この値を 0 (デフォルト、期限なし) から、レプリケートされたサーバー間で同期が完全にとられ、更新履歴ログが削除可能になるまでの期間に変更する
|
dn:cn=changelog5,cn=config
nsslapd-changemaxentries
|
更新履歴ログ内のエントリの最大数を指定する
この値を 0 (デフォルト、上限なし) から、更新履歴ログが削除されるまでにレプリケートされたサーバー間の同期が完全にとれるだけの数に変更する
|
dn:cn=changelog5,cn=config
nsslapd-cachesize
|
更新履歴ログのデータベースキャッシュ内のエントリの最大数を指定する
この値を -1 (デフォルト、上限なし) から、エントリがフラッシュされるまでに更新履歴ログ内に保持されるエントリの最大数に変更する
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
旧バージョン形式の更新履歴ログ
Directory Server には旧バージョン形式の更新履歴ログのプラグインが同梱されており、サプライヤのサーバーで起こった変化を、Directory Server 4.x リリースと互換のある、LDAP を通したアクセス可能な形式で記録することができます。旧バージョン形式の更新履歴ログのプラグインはデフォルトでは無効になっており、互換性の理由から必要となるまでは有効にすることをお勧めしません。詳細は、『Sun ONE Directory Server Reference Manual』を参照してください。表 8-6 に、特定の属性に対する詳細な要件を示します。
表 8-6    旧バージョン形式の更新履歴ログのチューニング要件
設定エントリの DN と設定属性
|
簡単な説明とチューニングの推奨事項
|
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
nsslapd-changelogdir
|
旧バージョン形式の更新履歴ログファイルのパスとファイル名を指定する
旧バージョン形式の更新履歴ログを専用のコントローラを持つ専用のディスクやディスクサブシステムに配置することを検討する。大きな I/O バッファが有用
|
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
nsslapd-changelogmaxage
|
旧バージョン形式の更新履歴ログ内のエントリの最長保存期間を指定する
この値を 0 (デフォルト、期限なし) から旧バージョン形式の更新履歴ログを使用するクライアントが、生成したログエントリを処理するまでの期間に変更する
|
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changelogmaxentries
|
旧バージョン形式の更新履歴ログ内のエントリの最大数を指定する
この値を 0 (デフォルト、上限なし) から削除までに旧バージョン形式の更新履歴ログに保持されるエントリの最大数に変更する
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。
トランザクションログ
Directory Server では、トランザクションログを通じてデータベースの整合性を管理しています。add、modify、delete、または modrdn の各更新操作を受け入れる際、Directory Server では操作に関するログメッセージをトランザクションログに書き込みます。永続トランザクションログ (デフォルトで有効) では、データの整合性が保証されます。この保証は、更新操作の結果コードがクライアントアプリケーションに返される前に、更新操作がディスク上のトランザクションログに確実にコミットされることで実現しています。システム障害時、Directory Server ではデータベースの回復にトランザクションログを使用します。データベースが異常にシャットダウンしたときの回復にトランザクションログを利用するには、トランザクションログとディレクトリデータベースを別々のディスクサブシステムに格納することを検討します。
トランザクションログは、特に永続性を有効にしている場合にディスクを著しく消費します。これは、更新のパフォーマンスで大きなボトルネックとなる可能性があります。システム障害に備えてデータ整合性をより適切に保護するだけでなく、トランザクションログとデータベースを Sun StorEdge ディスクアレイのような RAID システムを別々に用意して格納することで、更新パフォーマンスを向上させることができます。表 8-7 に、特定の属性に対する詳細な要件を示します。
表 8-7    トランザクションログのチューニング要件
設定エントリの DN と設定属性
|
簡単な説明とチューニングの推奨事項
|
dn:cn=config,cn=ldbm database,cn=plugins,cn=config
nsslapd-db-checkpoint-interval
|
Directory Server がトランザクションログを検査し、データベースシステム全体を確実にディスクに同期させ、トランザクションログをクリーンにする頻度を指定する
経験テストを基にしたデータベースのパフォーマンス最適化で異なる値が必要となるまでは、60 (デフォルトの間隔/秒) のままにしておくこと。この属性の値を増やすと更新操作のパフォーマンスが向上するが、同時に、異常なシャットダウンからの回復に時間がかかったり、トランザクションログでより多くのディスク容量を使用することになったりする
|
dn:cn=config,cn=ldbm database,cn=plugins,cn=config
nsslapd-db-durable-transaction
|
更新操作が、結果コードがクライアントに送信される前に、ディスク上のトランザクションログにコミットされるかどうかを指定する
高レベルのデータ整合性を必要とする導入では、on (デフォルト) のままにしておくこと。導入によっては、パフォーマンスを向上させるために、永続トランザクションログを無効にする場合がある。ただし、無効にすると、ログメッセージをファイルシステムにフラッシュしているが、ディスクにフラッシュしていない場合、システム障害時にログメッセージが失われるおそれがある。したがって、場合によっては、永続トランザクションログが off のとき、クライアントが更新成功の結果コードを受信した後でも回復できない更新がある
|
dn:cn=config,cn=ldbm database,cn=plugins,cn=config
nsslapd-db-logdirectory
|
トランザクションログファイルのパスとファイル名を指定する
トランザクションログを専用のコントローラを持つ非常に高速の専用のディスクやディスクサブシステムに格納することを検討する
|
個々の設定属性に関する詳細については、『Sun ONE Directory Server Reference Manual』を参照してください。