Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Interruptor para instrumentación personalizada de Java
El agente de Java New Relic incluye un interruptor que protege la aplicación de los efectos de la sobreinstrumentación. Cuando el interruptor detecta los primeros síntomas de agotamiento de la memoria, automáticamente se "dispara" y limita la instrumentación. El agente deja de recopilar datos de transacciones hasta que el interruptor se reinicia automáticamente después de decidir que el reinicio es seguro.
Cuando el porcentaje de memoria dinámica libre es menor que memory_threshold y el tiempo de CPU dedicado a la recolección de basura es mayor que gc_cpu_threshold, el interruptor se activa. Cuando se dispara el interruptor, el agente deja de recopilar datos de la transacción. El rendimiento informado en laUI estará subestimado y no verá la traza de la transacción durante un período de tiempo.
Razones del agotamiento de la memoria
El interruptor se activa cuando detecta signos de agotamiento de la memoria. Esto puede suceder por varias razones:
Su aplicación muestra signos tempranos de agotamiento de la memoria debido al despliegue reciente de instrumentación personalizada (mediante XML, llamada API, anotaciones de traza o el editor de instrumentación personalizada del agente de Java) o debido a la instrumentación incorporada.
Su aplicación experimentó un pico de carga y mostró signos de agotamiento de la memoria. En este caso, el agente no contribuye al pico, pero el interruptor puede ayudar a conservar recursos y garantizar que el agente no contribuya a OutOfMemoryErrors.
Su aplicación está ajustada para ejecutarse cerca de su límite de memoria.
Resolución de problemas
Si el interruptor se dispara, pruebe estos consejos de resolución de problemas.
Utilice la tabla Top methods by call count en la página del interruptor Events para encontrar métodos que podrían estar sobre instrumentados. Identificar y desactivar la instrumentación personalizada.
En general, el uso de memoria del agente es proporcional al recuento de llamadas de un método. Se debe utilizar instrumentación personalizada en métodos que se llamen no más de diez veces por transacción. Si la instrumentación está integrada en el agente, revise la documentación de instrumentación personalizada de New Relic para Java. Si necesita ayuda adicional, obtenga soporte en support.newrelic.com.
Revise cuidadosamente el historial de uso de memoria de su aplicación y determine si es necesario aumentar el tamaño máximo del montón de Java.
Si su aplicación se comporta como se esperaba, es posible que desee desactivar el interruptor. Para desactivar el interruptor, agregue enabled: false en la sección circuitbreaker de su archivo de configuración newrelic.yml :
common:&default_settings
circuitbreaker:
enabled:false
Para detectar signos tempranos de agotamiento de la memoria, el interruptor utiliza una fórmula con dos variables: memory_threshold y gc_cpu_threshold. Cuando el porcentaje de memoria dinámica libre es menor que memory_threshold y el tiempo de CPU dedicado a la recolección de basura es mayor que gc_cpu_threshold, el interruptor se activa. Ajuste estos valores según sea necesario, según el rendimiento operativo y el comportamiento de su aplicación.
Para obtener detalles de configuración, consulte memory_threshold y gc_cpu_threshold.