Configurar instantáneas de thread en el rastreador de APM
La función de instantáneas de subprocesos permite la recopilación de instantáneas de pila de subprocesos que se puede utilizar para un análisis detallado.
Las instantáneas de subprocesos permiten la recopilación de rastreos como instantáneas de pila de subprocesos, sobrecarga de memoria de subprocesos, sobrecarga de CPU de subprocesos e impacto de control global en el rastreo. Recopila las instantáneas de la pila de subprocesos y los datos relacionados con la pila, como el estado y los bloqueos, en un intervalo específico.
Los usuarios pueden activar la recopilación de instantáneas de pila de subprocesos para realizar volcados de pila de períodos. Proporciona visibilidad de pila de código de usuario.
El intervalo de tiempo por defecto de recopilación de instantáneas de thread es de 250 ms.
El rastreo de APM versión 1.4 o superior admite instantáneas de subprocesos y está desactivado por defecto.
El rastreador de APM y el agente de APM soportan instantáneas de thread. Para obtener detalles sobre la configuración de instantáneas de thread en el agente de APM, consulte Configuración de instantáneas de thread en el agente de APM.
Activar instantáneas de thread en el rastreador de APM
La instantánea de thread está integrada con ApmTracer
. Se inicializará como parte de la creación del objeto ApmTracer
.
Si está utilizando Helidon, vaya a Thread Snapshots in Helidon.
En el siguiente ejemplo, se muestran muchos métodos de configuración, incluido el de la función de instantáneas de thread: withCollectDeepDiveTraceSnapshot
con el valor (true)
. Las instantáneas de thread se llamarán desde la función de creación de ApmTracer
:
ApmTracer tracer = (ApmTracer) new ApmTracer.Builder(AGENT_TRACER_NAME,serviceName)
.withProperty(PROP_NAME_HYBRID_TRACER_STARTER, PROP_VALUE_HYBRID_TRACER_STARTER)
.withMicrosecondAccurateTimestamp(microsecondAccurate)
.withObject(agentCommon)
.withTraceListener(traceListener)
.withCollectThreadId(collectThreadId)
.withCollectThreadName(collectThreadName)
.withCollectDeepDiveTraceSnapshot(true)
.build();
Para obtener información sobre cómo crear instancias del rastreador de APM, consulte Instantiate APM Tracer.
Métodos de Configuración de Instantáneas de Thread
Están disponibles los siguientes métodos de configuración:
Método | Descripción | Unidad | Valor por defecto | Valores soportados |
---|---|---|---|---|
withMaxPercentTraceExportToCollectorPerMinute | Porcentaje máximo de rastreos entrantes por minuto para exportarlos al cobrador. | Porcentaje | 100 |
Mínimo: 1 Máximo: 100 |
withMaxTraceExportToCollectorPerMinute | Número máximo de rastreos principales por minuto para exportarlos al cobrador. | Número | 200 |
Mínimo: 1 Máximo: 1500 |
withSnapshotCollectionIntervalInMS | Intervalo en el que se recopilarán los datos de instantánea de thread. | Milisegundos | 250 |
Mínimo: 250 Máximo: 300000 |
withMaxSnapshotsPerTrace | Número máximo de instantáneas permitidas por rastreo. | Número | 16 |
Mínimo: 1 Máximo: 16 |
withMaxStackTraceDepthPerSnapshot | Máximo de marcos de rastreo de pila recopilados para cualquier thread. | Número | 256 |
Mínimo: 1 Máximo: 256 |
withLogLevel | Imprima logs de buceo profundo, que sean iguales o superiores a este valor de propiedad. | Cadena | INFO |
DEPURACIÓN, INFORMACIÓN, ADVERTENCIA, GRAVE |
withMaxProcessCpuUsagePercent | Uso máximo de CPU de proceso. Se recomienda mantener el uso general de CPU del proceso por debajo de este umbral. | Número | 90 |
Mínimo: 1 Máximo: 90 |
withDeepDiveCpuUsagePercent | Umbral mínimo para mantener el uso general profundo de la CPU. | Porcentaje | 3 |
Mínimo: 1 Máximo: 5 |
Umbral máximo para mantener el uso general profundo de la CPU. | Porcentaje | 5 |
Mínimo: 5 Máximo: 20 |
|
withTraceLifeInMS | Umbral mínimo para un rastreo. | Milisegundos | 50 |
Mínimo: 50 Máximo: 60000 |
Umbral máximo para un rastreo. | Milisegundos | 60000 |
Mínimo: 60000 Máximo: 600000 |
DeepDiveConfiguration deepDiveConfiguration = DeepDiveConfigurationBuilder.builder()
.withMaxPercentTraceExportToCollectorPerMinute(100)
.withMaxTraceExportToCollectorPerMinute(200)
.withSnapshotCollectionIntervalInMS(250)
.withMaxSnapshotsPerTrace(16)
.withMaxStackTraceDepthPerSnapshot(256)
.withLogLevel("INFO")
.withMaxProcessCpuUsagePercent(90)
.withDeepDiveCpuUsagePercent(Range.RangeBuilder.builder()
.withMinThreshold(3).withMaxThreshold(5).build())
.withTraceLifeInMS(Range.RangeBuilder.builder()
.withMinThreshold(50).withMaxThreshold(60000).build())
.build();
ApmTracer tracer = (ApmTracer) new ApmTracer.Builder(AGENT_TRACER_NAME, serviceName)
.withObject(deepDiveConfiguration)
.withCollectDeepDiveTraceSnapshot(true)
.build();
Instantáneas de Thread en Helidon
Las instantáneas de subprocesos están soportadas en Helidon. Se inicializará como parte de la creación del objeto ApmTracer
dentro de Helidon.
Para activar instantáneas de thread, actualice el archivo YAML
de Helidon, agregue la propiedad collect-deepdive-trace-snapshots
y defínala en true
.
Por ejemplo:
tracing:
name: "Helidon APM Tracer"
service: "helidonse-http"
data-upload-endpoint:<endpoint-url>
private-data-key: <private-data-key>
collect-metrics:true
collect-resources: true
collect-deepdive-trace-snapshots:true
Para obtener información sobre el uso del rastreador de APM en Helidon, consulte Uso del rastreador de APM en Helidon.
Propiedades de Configuración para Helidon
Para configurar instantáneas de threads en Helidon, actualice el archivo YAML de Helidon mediante las siguientes propiedades:
Nombre de propiedad | Descripción | Unidad | Valor por defecto | Valores soportados |
---|---|---|---|---|
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute | Porcentaje máximo de rastreos entrantes por minuto para exportarlos al cobrador. | Porcentaje | 100 |
Mínimo: 1 Máximo: 100 |
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute | Número máximo de rastreos principales por minuto para exportarlos al cobrador. | Número | 200 |
Mínimo: 1 Máximo: 1500 |
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS | Intervalo en el que se recopilarán los datos de instantánea de thread. | Milisegundos | 250 |
Mínimo: 250 Máximo: 300000 |
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace | Número máximo de instantáneas permitidas por rastreo. | Número | 16 |
Mínimo: 1 Máximo: 16 |
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot | Máximo de marcos de rastreo de pila recopilados para cualquier thread. | Número | 256 |
Mínimo: 1 Máximo: 256 |
com.oracle.apm.agent.deepdive.logLevel | Imprima logs de buceo profundo, que sean iguales o superiores a este valor de propiedad. | Cadena | INFO |
DEPURACIÓN, INFORMACIÓN, ADVERTENCIA, GRAVE |
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent | Uso máximo de CPU de proceso. Se recomienda mantener el uso general de CPU del proceso por debajo de este umbral. | Número | 90 |
Mínimo: 1 Máximo: 90 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold | Umbral mínimo para mantener el uso general profundo de la CPU. | Porcentaje | 3 |
Mínimo: 1 Máximo: 5 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold | Umbral máximo para mantener el uso general profundo de la CPU. | Porcentaje | 5 |
Mínimo: 5 Máximo: 20 |
com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold | Umbral mínimo para un rastreo. | Milisegundos | 50 |
Mínimo: 50 Máximo: 60000 |
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold | Umbral máximo para un rastreo. | Milisegundos | 60_000 |
Mínimo: 60000 Máximo: 600000 |
deepDiveProperties:
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute: 100
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute: 200
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS: 250
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace: 16
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot: 256
com.oracle.apm.agent.deepdive.logLevel: INFO
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent: 90
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold: 3
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold: 5
com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold: 50
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold: 60000
Verificar instantáneas de thread
Para verificar que la función de instantáneas de thread se ha configurado correctamente y que los datos se están cargando en Application Performance Monitoring, utilice la opción Vista de instantánea de Ver detalles de rastreo o período.