Crescita statale illimitata - 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à.

Crescita statale illimitata

Se l'applicazione non elimina correttamente le informazioni obsolete sullo stato, tali informazioni accumuleranno continuamente e causeranno problemi di prestazioni o stabilità delle applicazioni. Questa sezione descrive i sintomi e le procedure di risoluzione dei problemi relativi a questa condizione.

Caratteristiche

Questa condizione può avere i seguenti sintomi:

  • La metrica lastCheckpointDuration sta aumentando gradualmente o mostra un picco.

  • La metrica lastCheckpointSize sta aumentando gradualmente o mostra un picco.

Cause e soluzioni

Le seguenti condizioni possono causare l'accumulo di dati sullo stato dell'applicazione:

  • L'applicazione mantiene i dati sullo stato più a lungo del necessario.

  • L'applicazione utilizza query a finestra con una durata troppo lunga.

  • Non hai impostato il TTL per i tuoi dati di stato. Per ulteriori informazioni, consulta State Time-To-Live (TTL) nella documentazione di Apache Flink.

  • Stai eseguendo un'applicazione che dipende dalla versione 2.25.0 o successiva di Apache Beam. Puoi disattivare la nuova versione della trasformazione di lettura estendendo i tuoi BeamApplicationProperties esperimenti e il valore chiave. use_deprecated_read Per ulteriori informazioni, consulta la documentazione di Apache Beam.

A volte le applicazioni devono far fronte a una crescita continua delle dimensioni degli stati, il che non è sostenibile a lungo termine (dopotutto un'applicazione Flink viene eseguita indefinitamente). A volte, ciò può essere ricondotto al fatto che le applicazioni archiviano i dati in uno stato indeterminato e non eseguono correttamente il processo di invecchiamento delle vecchie informazioni. Ma altre volte ci sono solo aspettative irragionevoli su ciò che Flink può offrire. Le applicazioni possono utilizzare aggregazioni su ampie finestre temporali, che coprono giorni o addirittura settimane. A meno che non AggregateFunctionsvengano utilizzati, che consentono aggregazioni incrementali, Flink deve mantenere invariati gli eventi dell'intera finestra.

Inoltre, quando si utilizzano funzioni di processo per implementare operatori personalizzati, l'applicazione deve rimuovere dallo stato i dati che non sono più necessari per la logica di business. In tal caso, lo stato time-to-live può essere utilizzato per invecchiare automaticamente i dati in base al tempo di elaborazione. Il servizio gestito per Apache Flink utilizza checkpoint incrementali e quindi il TTL dello stato si basa sulla compattazione RocksDB. È possibile osservare una riduzione effettiva delle dimensioni dello stato (indicata dalla dimensione del checkpoint) solo in seguito a un'operazione di compattazione. In particolare per i checkpoint di dimensioni inferiori a 200 MB, è improbabile che si verifichi una riduzione delle dimensioni dei checkpoint a causa della scadenza dello stato. Tuttavia, i savepoint si basano su una copia pulita dello stato che non contiene dati obsoleti, quindi è possibile attivare uno snapshot nel servizio gestito per Apache Flink per forzare la rimozione dello stato obsoleto.

A scopo di debug, può essere utile disabilitare i checkpoint incrementali per verificare più rapidamente che la dimensione del checkpoint diminuisca o si stabilizzi (ed evitare l'effetto della compattazione in RocksBS). Tuttavia, per farlo occorre inoltrare un ticket al team di assistenza.