デフォルトで、Java エージェントはコードデッドロックを検出します。イベントリストまたはREST APIを使用してデッドロックを見つけ、詳細を確認できます。

コードデッドロックとその原因

マルチスレッドの開発環境では通常複数のロックを使用します。しかし、デッドロックが発生することがあります。考えられる原因を次に示します。

  • ロックの順番が最適でない
  • コールされるコンテキストが正しくない(たとえば、コールバック内)
  • 2つのスレッドがお互いにイベントの知らせを待機している可能性がある

イベントリストを使用したデッドロックの検出

イベントリストにコードデッドロックを表示するには、[Filter By Event Type] リストで [Code Problems](または [Code Deadlock])を選択します。以下のリストはECommerceティアの2つのデッドロックを示しています。

Filter By Event Type

コードデッドロックを検証するには、イベントリストのデッドロックイベントをダブルクリックし、コードデッドロックの [Summary] タブをクリックします。デッドロックの詳細が [Details] タブに表示されます。詳細については、「イベントのモニタリング」を参照してください。


REST API を使用したデッドロックの検出

AppDynamics REST APIを使用して、DEADLOCKイベントタイプを検出できます。詳しくは、「イベントデータを取得する」の例を参照してください。