Esta tradução de máquina é fornecida para sua comodidade.
In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.
Circuit breaker para instrumentação Java personalizada
O agente Java da New Relic inclui um circuit breaker que protege o aplicativo dos efeitos do excesso de instrumentação. Quando o circuit breaker detecta sintomas precoces de exaustão de memória, ele automaticamente “desarma” e limita a instrumentação. O agente para de coletar dados de transação até que o circuit breaker seja reinicializado automaticamente após decidir que a redefinição é segura.
O circuit breaker leva em consideração dois parâmetros (uso do heap e tempo gasto na coleta de lixo) para determinar quando deve desarmar. Os valores padrão para esses limites são porcentagens:
Limite de memória: 20%
Limite de CPU para coleta de lixo: 10%
Quando a porcentagem de memória heap livre for menor que memory_threshold e o tempo de CPU gasto na coleta de lixo for maior que gc_cpu_threshold, o circuit breaker . Quando o circuit breaker , o agente para de coletar dados de transação. as taxas de transferência informadas na interface serão subnotificadas e você não verá nenhum vestígio da transação por um período de tempo.
Razões para esgotamento da memória
O circuit breaker quando detecta sinais de esgotamento da memória. Isso pode acontecer por vários motivos:
Seu aplicativo mostra sinais precoces de esgotamento de memória devido à instrumentação personalizada recentemente implantada (usando XML, chamada de API, anotações trace ou o editor de instrumentação personalizada do agente Java) ou devido à instrumentação integrada.
Seu aplicativo sofreu um pico de carga e mostrou sinais de esgotamento de memória. Nesse caso, o agente não está contribuindo para o pico, mas o circuit breaker pode ajudar a conservar recursos e garantir que o agente não contribua para OutOfMemoryErrors.
Seu aplicativo está ajustado para ser executado próximo ao limite de memória.
Resolução de problemas
Se o circuit breaker , tente estas dicas de resolução de problemas.
Use a tabela Top methods by call count na página do circuit breaker Events para encontrar métodos que possam estar superinstrumentados. Identifique e desative a instrumentação personalizada.
Em geral, o uso de memória do agente é proporcional à contagem de chamadas de um método. A instrumentação personalizada deve ser usada em métodos que são chamados no máximo dez vezes por transação. Se a instrumentação estiver integrada ao agente, revise a documentação de instrumentação personalizada da New Relic para Java. Se precisar de ajuda adicional, obtenha suporte em support.newrelic.com.
Revise cuidadosamente o histórico de uso de memória do seu aplicativo e determine se é necessário aumentar o tamanho máximo de heap Java.
Se o seu aplicativo estiver se comportando conforme o esperado, você pode desabilitar o circuit breaker. Para desativar o circuit breaker, adicione enabled: false na seção circuitbreaker no arquivo de configuração newrelic.yml:
common:&default_settings
circuitbreaker:
enabled:false
Para detectar sinais precoces de esgotamento da memória, o circuit breaker utiliza uma fórmula com duas variáveis: memory_threshold e gc_cpu_threshold. Quando a porcentagem de memória heap livre for menor que memory_threshold e o tempo de CPU gasto na coleta de lixo for maior que gc_cpu_threshold, o circuit breaker . Ajuste esses valores conforme necessário, com base no desempenho operacional e no comportamento do seu aplicativo.
Para obter detalhes de configuração, consulte memory_threshold e gc_cpu_threshold.