非同期のトラッキングツール。トークンとセグメントJavaエージェントAPIは、非同期アクティビティをトレースする2つの方法を提供しています。トークンはスレッド間で渡され、非同期の作業単位を特定のトランザクションにリンクします。直接タイミングを実行することはありません。コードを測定するために使用されます。メカニズムによって完了した外部呼び出しを追跡するために使用されます。非同期スレッドの接続トークンを使用して、別々のスレッド上にある任意の作業単位をリンクします。このセクションでは、トークン関連のコールをまとめて使用し、非同期作業をインストルメント化する方法を説明します。クラスやメソッドの詳細については、Javadocを参照してください。トークンを使用するには、最初にトークンを作成してから、別の呼び出しを元のトランザクションにリンクする必要があります。他の呼び出し内でできるだけ早くトークンをリンクする必要があります。トークンをすぐにリンクしないと、リンクしようとしている呼び出しの下に@Traceを含むメソッドが失われるリスクがあります。元の呼び出しでトークンを期限切れにすることもできます。次に、JavaエージェントはNewRelicUIで作業をリンクします。これらの例は、トークン関連の呼び出しを一緒に使用する方法を示しています。1.トランザクションを開始してから、トークンを作成して期限切れにする以下のコードスニペットのメソッドparallelStream()について考えてみます。requestItemAsync()への呼び出しの一部は別のスレッドで発生するため、トークンが作成されて渡され、その非同期作業を要求元のスレッドにリンクします。true):エージェントにトランザクションを開始するように指示します。Javadocを参照してください。getToken():作業をリンクするトークンを作成します。Javadocを参照してください。token.expire():トークンを期限切れにします。これにより、トランザクションを終了できます。Javadocを参照してください。2.トランザクションを非同期としてマークし、リクエストスレッドにリンクする次のコード例はrequestItemAsyncを示しています。これは、要求元のスレッドとは別のスレッドで実行される可能性があります。requestItemAsyncのトランザクションにリンクされています。requestItemAsync()には@Trace(async=true)アノテーションが付いていることに注意してください。これは、既存のトランザクションにリンクされている場合にこのメソッドをトレースするようにエージェントに指示します。parallelStream()がすべての結果を収集した後、トークンは期限切れになります。parallelStream()の完了後にトランザクションが開いたままにならないようにするために重要です。true):トランザクションを開始します。Javadocを参照してください。requestItemAsync()で実行されている作業(別のスレッドで実行されている)を要求元のスレッドにリンクします。このメソッドの詳細については、Javadocを参照してください。detailsにアクセスしてください。ビューに表示されます。同じスレッドにあるメソッドをリンクする必要はありませんが、リンクしても悪影響はありません。parallelStream()の例のように、単一のトークンを共有できる場合がよくあります。ヒントデフォルトでは、トランザクションは最大3000のトークンを作成でき、各トークンのデフォルトのタイムアウトは180秒です。configオプションで変更できます。token_clamp属性が含まれます。いずれかの構成オプションを増やすと、エージェントのメモリ使用量が増える可能性があります。セグメンテーションです。任意の時間の非同期アクティビティセグメントは、非同期アプリケーションコードの任意の部分を計測するために使用され、必ずしもメソッドやスレッドに関連付けられている必要はありません。これは、外部サービスへの接続時間を計測するために最もよく使われます。必要に応じてセグメントを使用してください。コールバックで完了するタイムコード多くのメソッドにまたがる非同期呼び出しの時間ワークが作成されてから実行されるまでの時間を計測する(例:スレッドプールの場合)1.トランザクションの作成と外部サービスの呼び出し以下のメソッドは、メソッドstoreItem()を使用して外部サービス(この場合はデータベース)を呼び出します。storeItem()の実行時間を決定するのではなく、LambdaステートメントのCallableが実行前にスレッドプールで待機している時間を調べることです。true)は必要ありません。true):トランザクションを開始します。Javadocを参照してください。プールで待機している時間を測定するセグメントを示しています。.end()または.ignore()いずれかを呼び出す必要があります。.ignore()を呼び出します。.end()を呼び出します。本サンプルでのエージェントAPIコールはstartSegment(...):コードの時間を計測するセグメントを開始します。Javadocを参照してください。reportAsExternal(DatastoreParameters()):時刻をデータストアの外部呼び出しに関連付けます。データストアデータとともに表示されます。reportAsExternalAPIを参照してください。segment.end():このセグメントのタイミングを停止します。Javadocを参照してください。つの外部呼び出しを含むトランザクション追跡を表示します。ヒントデフォルトでは、エージェントは特定のトランザクション中に最大1000セグメントを追跡できます。segment_timeout構成オプションを使用して変更できます。segment_clamp属性が含まれます。この制限を増やすと、エージェントのメモリ使用量が増える可能性があります。非同期のトラッキングツール。トークンとセグメントトークン。非同期スレッドの接続セグメンテーションです。