トランザクションスナップショットでのスレッドの競合

スレッドの競合情報を表示するには

  1. トランザクション スナップショットのナビゲーションページで、[Potential Issues] ペインから Thread Contention の問題としてラベル付けされた項目を探します。時間の列には、ブロックされた時間(待ち時間)が表示されます。
  2. ブロックされたメソッドの詳細情報を表示するには、スレッドの競合項目をクリックし、[Drill Down into Call Graph.] を選択します。コールグラフには、スレッドの競合に関連する次の情報が表示されます。
    • [Call Graph] ヘッダーの [Wait Time] および [Block Time] は、ビジネストランザクションの 1 つのセグメントにおけるスレッドの集約測定値を示します。
    • [Call Graph] ヘッダーの [Node] は、競合するスレッドをホストするノードの名前を指定します(上記の例では PojoNode)。
    • [Time] 列は、メソッドの合計セルフ時間を示します。
    • [Percent%] 列は、メソッドで費やされた時間を、スレッドの全体的な時間の割合として表示します。
    • [Thread State] 列は、メソッドのスレッド競合問題の程度を示します。灰色は問題なしを意味し、黄色から赤色までの網かけは、競合に関する問題のシビラティ(重大度)を表す。(バーの上にマウスを合わせると、スレッドの状態を構成する要素が表示される。これにはデフォルトでブロック時間と待ち時間が含まれる。スレッドの状態の詳細に CPU 時間を含めるには、開発モードを有効にする必要がある。)

  3. ブロック時間または待機時間を示すスレッド状態の任意のメソッドを右クリックし、[View Details.] を選択します。[Thread Contention] 詳細ペインが表示されます。

    [Thread Contention] 詳細ペインでは、ブロックされたメソッドの名前が左上に表示され、[Thread Contention] の表に以下の情報が追加されます。

    エレメント意味
    ブロックしているスレッドブロックしているオブジェクトのロックを保持するスレッド
    ブロックしているオブジェクトブロックされたスレッドがアクセスを待っているオブジェクト。
    ブロック時間オブジェクトへアクセスするための待ち時間合計。
    行番号ブロックされたメソッドで、ブロックしているオブジェクトがアクセスされる行番号。上記の例では、run は行 114 でロックされたオブジェクトにアクセスしようとしています。

    この表で、ブロックしているスレッドの表示順は重要ではなく、コールの順番や時系列を表すものではありません。

注: Splunk AppDynamics開発モードでは、 は などの明示的なロックを [Thread Details] コールグラフビューでブロック時間ではなく待機時間として報告します。ビジネストランザクションをモニタリングしてロックの競合に関するパフォーマンスを分析する際には、この点を考慮する必要があります。