Sun Java System Directory Server Enterprise Edition 6.3 トラブルシューティングガイド

ハングアップまたは応答しない Directory Proxy Server プロセスのトラブルシューティング

この節では、応答しないまたはハングアップした Directory Proxy Server プロセスのトラブルシューティングについて説明します。まったく応答しないプロセスを、ハングアップと呼びます。この節の以降の部分では、ハングアップに関するデータを収集および分析する方法について説明します。

Solaris での Directory Proxy Server 6.3 のハングアップに関するデータの収集

jstat ツールは、CPU の使用量をスレッドごとに示します。jstat ツールの実行と同時に jstack ユーティリティーを使用してスレッドスタックを収集する場合は、jstack の出力を使って問題発生時のスレッドの動作を確認できます。jstack および jstat ツールを同時に何度も実行していくと、問題が同じスレッドで発生していたのか、また同じ関数呼び出しで発生していたのかを確認できます。

実行中の Directory Proxy Server のプロセス ID を取得するには、jps コマンドを使用します。たとえば、Solaris では、次のようにこのコマンドを実行します。


# jps
8393 DistributionServerMain
2115 ContainerPrivate
21535 startup.jar
16672 Jps
13953 swupna.jar

次のように使用状況の情報を収集します。


# ./scp DPS-PID

DPS-PID フィールドには、応答しないプロセスの PID を指定します。

Solaris およびその他の UNIX プラットフォームでは、次のように truss コマンドを使用して、クラッシュ時に発生するシステムコールを表示します。


truss -o /tmp/trace.txt -ealf -rall -wall -vall -p 21362

21362 は、応答しないプロセスの PID に対応します。

Solaris での Directory Proxy Server 5.x のハングアップに関するデータの収集および分析

prstat ツールは、CPU の使用量をスレッドごとに示します。prstat ツールの実行と同時に pstack ユーティリティーを使用してプロセススタックを収集する場合は、pstack の出力を使って問題発生時のスレッドの動作を確認できます。prstat および pstack ツールを同時に何度も実行していくと、問題が同じスレッドで発生していたのか、また同じ関数呼び出しで発生していたのかを確認できます。


注 –

Linux では、Solaris の pstack ユーティリティーの代わりに lsstack または pstack コマンドを使用します。


次に示すのは、これらのツールの実行を自動化するスクリプトです。


cat scp
#!/bin/sh  

i=0 
while [ "$i" -lt "10" ] 
do
         echo "$i\n"
         date=`date "+%y%m%d:%H%M%S"`
         prstat -L -p $1 0 1 > /tmp/prstat.$date
         pstack $1 > /tmp/pstack.$date
         i=`expr $i + 1`;
         sleep 1 
done  

[ "$i" -lt "10" ] 行の値 10 は、トラブルシューティング中の問題が発生する時間に合わせて増減できます。この調整により、完全なプロセスデータセットを収集して問題のトラブルシューティングに役立てることができます。このようにして、問題に関係する完全なプロセスデータセットの入手が可能になります。

次のように使用状況の情報を収集します。


# ./scp DPS-PID

DPS-PID フィールドには、応答しないプロセスの PID を指定します。

Solaris およびその他の UNIX プラットフォームでは、次のように truss コマンドを使用して、クラッシュ時に発生するシステムコールを表示します。


truss -o /tmp/trace.txt -ealf -rall -wall -vall -p 21362

21362 は、応答しない ldapfwd プロセスの PID に対応します。

ハングアップに関するデータの分析

Directory Proxy Server がクラッシュする際には、常にコアが生成されます。このコアファイルおよびそのプロセススタックを使って、問題を分析できます。コアファイルの分析については、「Solaris でのコアファイルの確認」を参照してください。ただし、ユーティリティーを ns-slapd バイナリディレクトリから実行するのではなく、から実行する必要があります。

たとえば、truss コマンドの出力がクラッシュ時にシステムコールが作成されていないことを示している場合は、パッシブハングアップであることがわかります。コアファイルおよび jstack または pstack の情報を確認することにより、処理を続行するためにロックが解除されるのを待っている複数のスレッドを特定できます。さまざまなツールの出力を比較することにより、問題の原因がデッドロックであることを推測できます。この情報を使用することで、Sun サポートは問題解決の支援を適時的確に行うことができます。