Java agent API for async token and segments の使用に問題がある場合は、以下のテクニックを使って答えを見つけ、問題を解決してください。
インストルメンテーションの確認
APIには、誤ったAPIの使用による問題を防ぐための安全機構が数多く組み込まれていますが、これらの技術を使って、アプリケーションのインスツルメンテーションが正しいかどうかを確認することができます。
コードをインストルメント化した後、同数のトークンが作成され、期限切れになったことをログが示していることを確認します。どのようなログメッセージを見るべきかの詳細については、 Use logs to troubleshoot を参照してください。
APM の
ページのガベージ コレクション統計を確認して、変更によってガベージ コレクション パターンが大幅に変更されたかどうかを判断します。
timed_out
属性の トランザクション追跡を 調べて、タイムアウトになっているセグメントまたはトークンがないかどうかを確認してください。その場合、token_timeout
とsegment_timeout
で制限を変更できます。
ログを使ったトラブルシューティング
Javaエージェントのログをカスタマイズするには、 Generating logs を参照してください。次に、これらの一般的なメッセージについてログを調べることができます。
作成されたトークンを表示するには、
FINEST
で次のログを確認してください:Transaction com.newrelic.agent.Transaction@5a7cc8e: created active token com.newrelic.agent.TokenImpl@7db8d0e8期限切れのトークンとそれらが期限切れになった時刻を表示するには、
FINEST
で次のログを確認します。Transaction com.newrelic.agent.Transaction@5a7cc8e: expired token com.newrelic.agent.TokenImpl@7db8d0e8作成されたセグメントを表示するには、
FINEST
で次のログを確認してください:Transaction com.newrelic.agent.Transaction@486b7f04: startSegment(): com.newrelic.agent.Segment@2b7fdad3 created and started with tracer com.newrelic.agent.tracers.OtherRootTracer@4df4a953終了したセグメントとそれらが終了した時刻を表示するには、
FINEST
で次のログを確認してください:com.newrelic.agent.Transaction@486b7f04--finish segment(): com.newrelic.agent.Segment@2b7fdad3 async finish with tracer com.newrelic.agent.tracers.OtherRootTracer@4df4a953
問題:トランザクション時間が長すぎる
トークンを期限切れにして、セグメントを終了または無視するようにしてください。そうしないと、トランザクションが New Relic に報告するのに時間がかかる場合があります。Java エージェントには、正しく終了しないトークンとセグメントのタイムアウト メカニズムがあります。詳細については、 token_timeout
と segment_timeout
を参照してください。
問題:トランザクション・トレース・データがない
トランザクション追跡を調べて、予想される非同期作業が報告されていることを確認します。トランザクション追跡が表示されない場合は、トランザクション期間が transaction_threshold
で設定されたトランザクション追跡しきい値を超えていることを確認してください。
問題:非同期呼び出しが少なすぎる
あまりにも少ないコールが報告されている場合