View a markdown version of this page

Il checkpoint è in fase di interruzione - Servizio gestito 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à.

Il checkpoint è in fase di interruzione

Se l'applicazione non è correttamente ottimizzata o predisposta, i checkpoint possono non riuscire. Questa sezione descrive le caratteristiche e le procedure di risoluzione dei problemi relativi alla problematica precedentemente analizzata.

Caratteristiche

Se l'applicazione non riesce ad effettuare i checkpoint, numberOfFailedCheckpoints sarà maggiore di zero.

I checkpoint possono non riuscire a causa di errori diretti (per esempio errori delle applicazioni) o di errori temporanei (per esempio l'esaurirsi delle risorse dell'applicazione). Verifica i log e i parametri dell'applicazione, alla ricerca delle seguenti caratteristiche:

  • errori nel codice;

  • errori di accesso ai servizi dipendenti dell'applicazione;

  • errori nella serializzazione dei dati. Se il serializzatore predefinito non è in grado di serializzare i dati dell'applicazione, l'applicazione cesserà di funzionare. Per informazioni sull'utilizzo di un serializzatore personalizzato nell'applicazione, consulta Tipi di dati e serializzazione nella documentazione di Apache Flink.

  • errori relativi all'esaurimento della memoria;

  • picchi o aumenti costanti nelle seguenti metriche:

    • heapMemoryUtilization

    • oldGenerationGCTime

    • oldGenerationGCCount

    • lastCheckpointSize

    • lastCheckpointDuration

Per ulteriori informazioni sul monitoraggio dei checkpoint, consulta Monitoring Checkpointing nella documentazione di Apache Flink.

Cause e soluzioni

I messaggi di errore del log delle applicazioni mostrano la causa degli errori diretti. Gli errori temporanei possono essere provocati dalle seguenti cause:

  • Le KPU fornite dall'applicazione non sono sufficienti. Per ulteriori informazioni su come aumentarne la quantità, consulta Implementa la scalabilità delle applicazioni.

  • La dimensione dello stato dell'applicazione è troppo grande. È possibile monitorare le dimensioni dello stato dell'applicazione utilizzando la metrica lastCheckpointSize.

  • I dati sullo stato dell'applicazione sono distribuiti in modo non uniforme tra le chiavi. Se l'applicazione utilizza l'operatore KeyBy, assicurati che i dati in entrata siano divisi equamente tra le chiavi. Assegnare la maggior parte dei dati a un'unica chiave implica la creazione di un collo di bottiglia, che provocherà errori.

  • L'applicazione subisce una contropressione della memoria o della rimozione di oggetti inutili (garbage collection). Consigliamo di monitorare heapMemoryUtilization, oldGenerationGCTime e oldGenerationGCCount dell'applicazione, per rilevare eventuali picchi o valori in aumento costante.