Cette traduction automatique est fournie pour votre commodité.
En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.
disjoncteur pour Java instrumentation personnalisé
L'agent Java de New Relic inclut un disjoncteur qui protège l'application des effets d'une surinstrumentation. Lorsque le disjoncteur détecte les premiers symptômes d'épuisement de la mémoire, il « déclenche » automatiquement et limite l'instrumentation. L'agent arrête de collecter les données de transaction jusqu'à ce que le disjoncteur se réinitialise automatiquement après avoir décidé que la réinitialisation est sûre.
Lorsque le pourcentage de mémoire de tas libre est inférieur à memory_threshold et que le temps CPU consacré à la collecte des déchets est supérieur à gc_cpu_threshold, le disjoncteur se déclenche. Lorsque le disjoncteur se déclenche, l'agent arrête de collecter les données de transaction. le débit signalé dans l'UI sera sous-estimé et vous ne verrez pas de trace de transaction pendant un certain temps.
Raisons de l'épuisement de la mémoire
Le disjoncteur se déclenche lorsqu'il détecte des signes d'épuisement de la mémoire. Cela peut se produire pour plusieurs raisons :
Votre application montre les premiers signes d'épuisement de la mémoire en raison du déploiement récent de l'instrumentation personnalisée (à l'aide de XML, de l'appel d'API, des annotations des traces ou de l'instrumentation éditeur personnalisée de l'agent Java) ou en raison de l'instrumentation intégrée.
Votre application a connu un pic de charge et a montré des signes d’épuisement de la mémoire. Dans ce cas, l'agent ne contribue pas au pic, mais le disjoncteur peut aider à conserver les ressources et garantir que l'agent ne contribue pas à OutOfMemoryErrors.
Votre application est configurée pour fonctionner à une limite de mémoire proche de celle-ci.
Dépannage
Si le disjoncteur se déclenche, essayez ces conseils de dépannage.
Utilisez le tableau Top methods by call count sur la page disjoncteur Events pour trouver les méthodes qui pourraient être sur-instrumentées. Identifier et désactiver l’instrumentation personnalisée.
En général, l’utilisation de la mémoire de l’agent est proportionnelle au nombre d’appels d’une méthode. L'instrumentation personnalisée doit être utilisée sur les méthodes qui ne sont pas appelées plus d'une dizaine de fois par transaction. Si l'instrumentation est intégrée à l'agent, consultez la documentation de l'instrumentation personnalisée de New Relic pour Java. Si vous avez besoin d'aide supplémentaire, obtenez de l'aide sur support.newrelic.com.
Examinez attentivement l’historique d’utilisation de la mémoire de votre application et déterminez si l’augmentation de la taille maximale du tas Java est nécessaire.
Si votre application se comporte comme prévu, vous souhaiterez peut-être désactiver le disjoncteur. Pour désactiver le disjoncteur, ajoutez enabled: false sous la section circuitbreaker de votre fichier de configuration newrelic.yml :
common:&default_settings
circuitbreaker:
enabled:false
Pour détecter les premiers signes d’épuisement de la mémoire, le disjoncteur utilise une formule à deux variables : memory_threshold et gc_cpu_threshold. Lorsque le pourcentage de mémoire de tas libre est inférieur à memory_threshold et que le temps CPU consacré à la collecte des déchets est supérieur à gc_cpu_threshold, le disjoncteur se déclenche. Ajustez ces valeurs selon vos besoins, en fonction des performances de fonctionnement et du comportement de votre application.
Pour les détails de configuration, voir memory_threshold et gc_cpu_threshold.