この節では、まったく応答しない Directory Server プロセスのトラブルシューティングについて説明します。まったく応答しないプロセスはハングアップと呼ばれます。発生する可能性のあるハングアップには、次の 2 種類があります。
アクティブハングアップ (CPU レベルが 100% の場合)。たとえば、プロセスが無限ループに陥ると、要求を永久に待機したり、要求にサービスを永久に提供したりします。
パッシブハングアップ (CPU レベルが 0% の場合)。たとえば、プロセスがデッドロックする場合です。デッドロックではプロセスの複数のスレッドがほかのスレッドの完了を待機しているために、何も実行されません。
この節の残りの部分では、各タイプのプロセスハングアップのトラブルシューティング方法について説明します。
top または vmstat 1 の出力に 95% を超える CPU レベルが表示される場合は、アクティブハングアップです。
この節では、アクティブハングアップの原因、アクティブハングアップの情報の収集方法、およびこのデータの分析方法について説明します。
アクティブハングアップの原因としては、次のことが考えられます。
無限ループ
レプリケーション操作や不正なコミットなど、成功しなかった操作の再試行
Solaris システムでは、Solaris pstack ユーティリティーを使用して、ハングアップしている Directory Server プロセススタックの複数のトレースを収集します。このコマンドは、root-dir/bin/slapd/server ディレクトリから実行します。また、Solaris prstat ユーティリティーを使って、アクティブなプロセスに関する統計情報も収集してください。サーバーがハングアップしている間に、この情報を収集する必要があります。
連続している pstack および prstat データを毎秒収集してください。
top または vmstat 1 の出力に低い CPU レベルが表示される場合は、パッシブハングアップです。
パッシブハングアップの原因としては、次のことが考えられます。
ロックまたは条件変数に起因するデッドロック
終了したスレッド
Solaris システムでは、Solaris pstack ユーティリティーを使用して、ハングアップしている Directory Server プロセススタックの複数のトレースを収集します。このコマンドは、root-dir/bin/slapd/server ディレクトリから実行します。サーバーがハングアップしている間に、この情報を収集する必要があります。連続した pstack データを 3 秒ごとに収集してください。
サーバーがハングアップしている間に、サーバースレッドの状態が示された複数のコアファイルを収集します。これには、gcore コマンドを使用してコアファイルを生成し、コアファイルの名前を変更して、30 秒待ってから別のコアファイルを生成します。この手順をあと 1 回以上繰り返して、コアファイルと関連するデータのセットを 3 つ以上取得します。
コアファイルの生成の詳細については、「コアファイルの生成」を参照してください。