Java agent API for async token and segments の使用に問題がある場合は、以下のテクニックを使って答えを見つけ、問題を解決してください。
インストルメンテーションの確認
APIには、誤ったAPIの使用による問題を防ぐための安全機構が数多く組み込まれていますが、これらの技術を使って、アプリケーションのインスツルメンテーションが正しいかどうかを確認することができます。
- コードをインストルメント化した後、同数のトークンが作成され、期限切れになったことをログが示していることを確認します。どのようなログメッセージを見るべきかの詳細については、 Use logs to troubleshoot を参照してください。
- APMの JVMの ページ でガベージコレクションの統計を確認し、変更によってガベージコレクションのパターンが大きく変わったかどうかを判断します。
- トランザクションのトレース に
timed_out
属性があるかどうかを確認して、セグメントやトークンがタイムアウトしていないかどうかを確認します。もしそうであれば、token_timeout
andsegment_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
で設定したトランザクショントレースのしきい値を超えていることを確認してください。
問題:非同期呼び出しが少なすぎる
あまりにも少ないコールが報告されている場合