Risolvi i problemi di prestazioni - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risolvi i problemi di prestazioni

Questa sezione contiene un elenco di caratteristiche la cui verifica permette di diagnosticare e risolvere i problemi relativi alle prestazioni.

Se l'origine dati è un flusso Kinesis, i problemi di prestazioni in genere si presentano nella forma di una metrica millisbehindLatest elevata o in crescita. Per altre fonti, è consigliabile controllare una metrica simile che rappresenta il ritardo nella lettura dalla fonte.

Comprendi il percorso dei dati

Quando analizzi un problema relativo alle prestazioni dell’applicazione, considera l'intero percorso compiuto dai dati. I seguenti componenti dell'applicazione possono ridurre l’efficacia delle prestazioni e creare una congestione, se non sono progettati o predisposti correttamente:

  • Origine e destinazione dei dati: è fondamentale assicurarsi che le risorse esterne con cui interagisce l'applicazione siano adeguatamente predisposte per la velocità di trasmissione effettiva dell'applicazione.

  • Dati sullo stato: è fondamentale assicurarsi che l'applicazione non interagisca in maniera troppo frequente con l’archivio degli stati precedenti.

    È possibile ottimizzare il serializzatore utilizzato dall'applicazione. Il serializzatore Kryo predefinito può gestire qualsiasi tipo serializzabile, ma puoi usare un serializzatore più performante se l'applicazione memorizza solo i dati in tipi. POJO Per informazioni sui serializzatori Apache Flink, consulta Tipi di dati e serializzazione nella documentazione di Apache Flink.

  • Operatori: la logica di business implementata dagli operatori non deve essere eccessivamente complicata; è meglio evitare, inoltre, che ogni record elaborato crei o utilizzi risorse. Assicurati inoltre che l'applicazione non crei finestre scorrevoli o a cascata con troppa frequenza.

Soluzioni per la risoluzione dei problemi

Questa sezione contiene potenziali soluzioni ai problemi relativi alle prestazioni.

CloudWatch livelli di monitoraggio

Verificare che i livelli di CloudWatch monitoraggio non siano impostati su un'impostazione troppo dettagliata.

L'impostazione Debug Monitoraggio del livello dei log genera una grande quantità di traffico, che può creare una congestione. È consigliabile utilizzarla unicamente quando si esaminano in maniera attiva i problemi relativi all'applicazione.

Se l'applicazione ha un'impostazione Parallelism elevata, l'utilizzo del Parallelismlivello delle metriche di monitoraggio genererà analogamente una grande quantità di traffico, che può portare a una congestione. È consigliabile utilizzare questo livello di metriche solo quando Parallelism per l'applicazione è a un livello ridotto o durante l'analisi di problemi relativi all'applicazione.

Per ulteriori informazioni, consulta Controlla i livelli di monitoraggio delle applicazioni.

Metrica dell'applicazione CPU

Controlla la metrica CPU dell'applicazione. Se è superiore al 75%, è possibile consentire all'applicazione di allocare una quantità superiore di risorse a sé stessa, abilitando il dimensionamento automatico.

Se la scalabilità automatica è abilitata, l'applicazione alloca più risorse se CPU l'utilizzo è superiore al 75 percento per 15 minuti. Per ulteriori informazioni sul dimensionamento è possibile consultare le sezioni Gestire correttamente il dimensionamento e Implementa la scalabilità delle applicazioni in Managed Service for Apache Flink.

Nota

Un'applicazione verrà ridimensionata automaticamente solo in risposta all'CPUutilizzo. L'applicazione non si ridimensiona automaticamente in risposta ad altre metriche di sistema, come heapMemoryUtilization. Se il livello di utilizzo dell'applicazione per altre metriche è elevato, è consigliabile aumentarne manualmente il parallelismo.

Parallelismo delle applicazioni

Consente di aumentare il parallelismo dell'applicazione. Il parallelismo dell'applicazione viene aggiornato utilizzando il ParallelismConfigurationUpdate parametro dell'azione. UpdateApplication

Il massimo KPUs per un'applicazione è 64 per impostazione predefinita e può essere aumentato richiedendo un aumento del limite.

È importante inoltre assegnare il parallelismo a ciascun operatore in base al relativo carico di lavoro, anziché limitarsi ad aumentare il parallelismo dell’applicazione. Leggi Parallelismo dell'operatore quanto segue.

Registrazione dell'applicazione

Controlla se l'applicazione registra un log per ogni record elaborato. La creazione di un log per ogni record provocherà gravi rallentamenti nell'elaborazione dei dati durante i periodi in cui l'applicazione presenta una velocità di trasmissione effettiva elevata. Per verificare questa condizione, interroga i log alla ricerca delle voci di registro create dall'applicazione per ogni nuovo record che elabora. Per ulteriori informazioni relative all’analisi dei log delle applicazioni, consulta Analizza i log con CloudWatch Logs Insights.

Parallelismo dell'operatore

Verifica che il carico di lavoro dell'applicazione sia distribuito in modo uniforme tra i processi di lavoro.

Per informazioni sull’ottimizzazione del carico di lavoro degli operatori dell'applicazione, consulta. Dimensionamento degli operatori

Logica dell'applicazione

Esamina la logica dell'applicazione per individuare eventuali azioni poco efficienti o dalle prestazioni ridotte, come l'accesso a una dipendenza esterna (un database o un servizio web, per esempio), l'accesso allo stato dell'applicazione, ecc. Una dipendenza esterna può inoltre limitare le prestazioni, se non è efficiente o non è accessibile in modo affidabile, il che può causare errori HTTP 500 ricorrenti nella restituzione della dipendenza esterna.

L’impiego dell'IO asincrono può rivelarsi utile se l’applicazione si avvale di una dipendenza esterna per l’arricchimento o l’elaborazione dei dati in entrata. Per ulteriori informazioni, consulta Async I/O nella documentazione di Apache Flink.

Memoria dell'applicazione

Verifica l’assenza di dispersione delle risorse all’interno dell'applicazione. Se l'applicazione non elimina correttamente i thread o la memoria, è possibile che si verifichi un picco o un aumento graduale dei parametri millisbehindLatest, CheckpointSize e CheckpointDuration. Tale situazione può causare, inoltre, errori nel task manager o nel job manager.