Configura snapshot thread in Tracer APM
La funzione Snapshot thread consente la raccolta di snapshot dello stack di thread che possono essere utilizzati per l'analisi approfondita.
Gli snapshot thread consentono la raccolta di trace quali gli snapshot dello stack di thread, il sovraccarico di memoria dei thread, il sovraccarico della CPU di thread e l'impatto di gc sul trace. Raccoglie gli snapshot dello stack di thread e i dati correlati allo stack, ad esempio stato e lock, a un intervallo specifico.
Gli utenti possono abilitare la raccolta di snapshot dello stack di thread per l'acquisizione del dump dello stack degli intervalli. Offre visibilità sullo stack di codice dell'utente.
L'intervallo di tempo predefinito per la raccolta delle istantanee thread è 250 ms.
La versione di APM Tracer 1.4 o successiva supporta gli snapshot thread ed è disabilitata per impostazione predefinita.
Tracer APM e agente APM supportano gli snapshot thread. Per informazioni dettagliate sulla configurazione degli snapshot di thread nell'agente APM, vedere Configura snapshot di thread nell'agente APM.
Abilita snapshot thread in Tracer APM
Snapshot thread integrato con ApmTracer
. Verrà inizializzato come parte della creazione dell'oggetto ApmTracer
.
Se si utilizza Helidon, passare a Snapshot thread in Helidon.
L'esempio riportato di seguito mostra molti metodi di configurazione, incluso quello per le istantanee di thread: withCollectDeepDiveTraceSnapshot
con valore (true)
. Gli snapshot thread verranno richiamati dalla funzione di build di 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();
Per informazioni su come creare un'istanza di APM Tracer, vedere Istanzia APM Tracer.
Metodi di configurazione snapshot thread
Sono disponibili i metodi di configurazione riportati di seguito.
Metodo | descrizione; | Unità | Valore predefinito | Valori supportati |
---|---|---|---|---|
withMaxPercentTraceExportToCollectorPerMinute | Percentuale massima di trace in entrata al minuto per esportarli nel collector. | Percentuale | 100 |
minimo:1 Massimo: 100 |
withMaxTraceExportToCollectorPerMinute | Numero massimo di prime tracce al minuto per esportarle nel collector. | Numerico | 200 |
minimo:1 Massimo: 1500 |
withSnapshotCollectionIntervalInMS | Intervallo in base al quale verranno raccolti i dati dello snapshot del thread. | millisecondi | 250 |
Minima:250 Massimo: 30000 |
withMaxSnapshotsPerTrace | Numero massimo di snapshot consentiti per trace. | Numerico | 16 |
Minima: 1 Massima: 16 |
withMaxStackTraceDepthPerSnapshot | Numero massimo di frame di stack trace raccolti per qualsiasi thread. | Numerico | 256 |
Minima: 1 Massimo: 256 |
withLogLevel | Stampa i log di approfondimento, uguali o superiori a questo valore di proprietà. | Stringa | Informazioni |
DEBUG, INFO, AVVISA, GRAVE |
withMaxProcessCpuUsagePercent | Uso massimo della CPU del processo. Si consiglia di mantenere l'uso complessivo della CPU del processo sotto questa soglia. | Numerico | 90 |
Minima: 1 Massimo: 90 |
withDeepDiveCpuUsagePercent | Soglia minima per mantenere l'uso complessivo della CPU deepdive. | Percentuale | 3 |
Minima: 1 Massimo: 5 |
Soglia massima per mantenere l'uso complessivo della CPU deepdive. | Percentuale | 5 |
Minima: 5 Massima: 20 |
|
withTraceLifeInMS | Soglia minima per una traccia. | millisecondi | 50 |
Minima: 50 Massimo: 60000 |
Soglia massima per una traccia. | millisecondi | 60000 |
Minima: 60000 Massimo: 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();
Snapshot thread in Helidon
Gli snapshot thread sono supportati in Helidon. Verrà inizializzato come parte della creazione dell'oggetto ApmTracer
all'interno di Helidon.
Per abilitare gli snapshot dei thread, aggiornare il file YAML
di Helidon, aggiungere la proprietà collect-deepdive-trace-snapshots
e impostarla su true
.
Ad esempio:
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
Per informazioni sull'uso di APM Tracer in Helidon, vedere Use APM Tracer in Helidon.
Proprietà di configurazione di Helidon
Per configurare gli snapshot di thread in Helidon, aggiornare il file YAML di Helidon utilizzando le seguenti proprietà:
Nome proprietà | descrizione; | Unità | Valore predefinito | Valori supportati |
---|---|---|---|---|
com.oracle.apm.agent.deepdive.maxPercentTraceExportToCollectorPerMinute | Percentuale massima di trace in entrata al minuto per esportarli nel collector. | Percentuale | 100 |
minimo:1 Massimo: 100 |
com.oracle.apm.agent.deepdive.maxTraceExportToCollectorPerMinute | Numero massimo di prime tracce al minuto per esportarle nel collector. | Numerico | 200 |
minimo:1 Massimo: 1500 |
com.oracle.apm.agent.deepdive.snapshotCollectionIntervalInMS | Intervallo in base al quale verranno raccolti i dati dello snapshot del thread. | millisecondi | 250 |
Minima:250 Massimo: 30000 |
com.oracle.apm.agent.deepdive.maxSnapshotsPerTrace | Numero massimo di snapshot consentiti per trace. | Numerico | 16 |
Minima: 1 Massima: 16 |
com.oracle.apm.agent.deepdive.maxStackTraceDepthPerSnapshot | Numero massimo di frame di stack trace raccolti per qualsiasi thread. | Numerico | 256 |
Minima: 1 Massimo: 256 |
com.oracle.apm.agent.deepdive.logLevel | Stampa i log di approfondimento, uguali o superiori a questo valore di proprietà. | Stringa | Informazioni |
DEBUG, INFO, AVVISA, GRAVE |
com.oracle.apm.agent.deepdive.maxProcessCpuUsagePercent | Uso massimo della CPU del processo. Si consiglia di mantenere l'uso complessivo della CPU del processo sotto questa soglia. | Numerico | 90 |
Minima: 1 Massimo: 90 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.minThreshold | Soglia minima per mantenere l'uso complessivo della CPU deepdive. | Percentuale | 3 |
Minima: 1 Massimo: 5 |
com.oracle.apm.agent.deepdive.deepDiveCpuUsagePercent.maxThreshold | Soglia massima per mantenere l'uso complessivo della CPU deepdive. | Percentuale | 5 |
Minima: 5 Massima: 20 |
com.oracle.apm.agent.deepdive.traceLifeInMS.minThreshold | Soglia minima per una traccia. | millisecondi | 50 |
Minima: 50 Massimo: 60000 |
com.oracle.apm.agent.deepdive.traceLifeInMS.maxThreshold | Soglia massima per una traccia. | millisecondi | 60_000 |
Minima: 60000 Massimo: 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
Verifica snapshot thread
Per verificare che la funzione Snapshot thread sia stata configurata correttamente e che i dati siano stati caricati in Application Performance Monitoring, utilizzare l'opzione Vista snapshot in Visualizza dettagli trace o intervallo.