Le délai du point de contrôle est expiré - Service géré pour Apache Flink

Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics pour Apache Flink.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Le délai du point de contrôle est expiré

Si votre application n’est pas optimisée ou correctement provisionnée, les points de contrôle peuvent échouer. Cette section décrit les symptômes et les étapes de résolution de ce problème.

Symptômes

Si les points de contrôle échouent pour votre application, le numberOfFailedCheckpoints sera supérieur à zéro.

Les points de contrôle peuvent échouer soit en raison de d’échecs directs, telles que des erreurs d’application, soit en raison d’échecs temporaires, tels que l’épuisement des ressources de l’application. Vérifiez les journaux et les métriques de votre application pour détecter les symptômes suivants :

  • Des erreurs dans votre code.

  • Des erreurs lors de l’accès aux services dépendants de votre application.

  • Des erreurs lors de la sérialisation des données. Si le sérialiseur par défaut ne parvient pas à sérialiser les données de votre application, celle-ci échouera. Pour plus d'informations sur l'utilisation d'un sérialiseur personnalisé dans votre application, consultez la section Types de données et sérialisation dans la documentation d'Apache Flink.

  • Erreurs de mémoire insuffisante.

  • Des pics ou des augmentations constantes des métriques suivantes :

    • heapMemoryUtilization

    • oldGenerationGCTime

    • oldGenerationGCCount

    • lastCheckpointSize

    • lastCheckpointDuration

Pour plus d'informations sur la surveillance des points de contrôle, consultez la section Surveillance des points de contrôle dans la documentation d'Apache Flink.

Causes et solutions

Les messages d’erreur du journal de votre application indiquent la cause des échecs directs. Les échecs temporaires peuvent avoir les causes suivantes :

  • Le provisionnement en KPU de votre application est insuffisant. Pour obtenir des informations sur l’augmentation du provisionnement de l’application, consultez Mise à l'échelle.

  • La taille de l’état de votre application est trop grande. Vous pouvez surveiller la taille de l’état de votre application à l’aide de la métrique lastCheckpointSize.

  • Les données d’état de votre application sont réparties de manière inégale entre les clés. Si votre application utilise l’opérateur KeyBy, assurez-vous que les données entrantes sont réparties de manière égale entre les clés. Si la plupart des données sont attribuées à une seule clé, cela crée un goulot d’étranglement, qui entraînera des échecs.

  • Votre application est confrontée à une contre-pression liée à la mémoire ou au récupérateur de mémoire. Vérifiez s’il y a des pics ou des augmentations constantes des valeurs heapMemoryUtilization, oldGenerationGCTime et oldGenerationGCCount.