Si vous rencontrez agent Java API des problèmes lors de l'utilisation de l'pour les jetons et segments asynchrones, utilisez ces techniques pour vous aider à trouver des réponses et à résoudre les problèmes.
Vérifiez votre instrumentation
L'API dispose d'un certain nombre de mécanismes de sécurité intégrés pour éviter les problèmes causés par une utilisation incorrecte de l'API, mais vous pouvez utiliser ces techniques pour vérifier que l'instrumentation de votre application est correcte :
- Après avoir instrumenté votre code, vérifiez que le log indique qu'un nombre égal de jetons ont été créés et expirés. Pour plus d'informations sur le message de log à rechercher, voir Utiliser le log pour résoudre les problèmes.
- Vérifiez les statistiques de collecte des déchets sous la pageJVMs d'APM pour déterminer si vos modifications ont ou non considérablement modifié les modèles de collecte des déchets.
- Vérifiez si des segments ou des jetons expirent en examinant votre trace de transaction pour un attribut
timed_out
. Si tel est le cas, vous pouvez modifier la limite avectoken_timeout
etsegment_timeout
.
Utiliser le log pour résoudre les problèmes
Pour personnaliser le logging de votre agent Java, voir Génération du log . Ensuite, vous pouvez examiner votre log pour rechercher ces messages courants :
Pour afficher le jeton créé, consultez le log à
FINEST
pour :Transaction com.newrelic.agent.Transaction@5a7cc8e: created active token com.newrelic.agent.TokenImpl@7db8d0e8Pour afficher les jetons expirés et l'heure à laquelle ils ont expiré, consultez le log à
FINEST
pour :Transaction com.newrelic.agent.Transaction@5a7cc8e: expired token com.newrelic.agent.TokenImpl@7db8d0e8Pour afficher les segments créés, consultez le log à
FINEST
pour :Transaction com.newrelic.agent.Transaction@486b7f04: startSegment(): com.newrelic.agent.Segment@2b7fdad3 created and started with tracer com.newrelic.agent.tracers.OtherRootTracer@4df4a953Pour afficher les segments terminés et l’heure à laquelle ils se sont terminés, consultez le log à
FINEST
pour :com.newrelic.agent.Transaction@486b7f04--finish segment(): com.newrelic.agent.Segment@2b7fdad3 async finish with tracer com.newrelic.agent.tracers.OtherRootTracer@4df4a953
Problème : les délais de transaction sont trop longs
Assurez-vous d'expirer le jeton et de terminer ou d'ignorer les segments ; sinon, les transactions peuvent prendre plus de temps à être signalées à New Relic. L'agent Java dispose d'un mécanisme de timeout pour les jetons et les segments qui ne se terminent pas correctement. Pour plus d'informations, voir token_timeout
et segment_timeout
.
Problème : Aucune trace des données de transaction
Inspectez la trace de la transaction pour vous assurer que le travail asynchrone attendu est signalé. Si vous ne voyez aucune trace de transaction, assurez-vous que la durée de votre transaction dépasse le seuil de trace de transaction défini dans transaction_threshold
.
Problème : trop peu d'appels asynchrones
Si trop peu d’appels sont signalés :