Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
O ponto de verificação está atingindo o tempo limite
Se seu aplicativo não for otimizado ou provisionado adequadamente, os pontos de verificação podem falhar. Esta seção descreve os sintomas e as etapas de solução de problemas dessa condição.
Sintomas
Se os pontos de verificação falharem em seu aplicativo, o numberOfFailedCheckpoints será maior que zero.
Os pontos de verificação podem falhar devido a falhas diretas, como erros do aplicativo, ou devido a falhas transitórias, como a falta de recursos do aplicativo. Verifique os logs e as métricas do seu aplicativo para ver os seguintes sintomas:
Erros no seu código.
Erros ao acessar os serviços dependentes do seu aplicativo.
Erros ao serializar dados. Se o serializador padrão não conseguir serializar os dados do aplicativo, o aplicativo falhará. Para obter informações sobre como usar um serializador personalizado em seu aplicativo, consulte Tipos de dados e serialização
na Documentação do Apache Flink. Erros de falta de memória.
Picos ou aumentos constantes nas seguintes métricas:
heapMemoryUtilizationoldGenerationGCTimeoldGenerationGCCountlastCheckpointSizelastCheckpointDuration
Para obter mais informações sobre o monitoramento de pontos de verificação, consulte Monitoramento de pontos de verificação
Causas e soluções
As mensagens de erro de log do aplicativo mostram a causa das falhas diretas. Falhas transitórias podem ter as seguintes causas:
Seu aplicativo tem provisionamento de KPU insuficiente. Para obter informações sobre como aumentar o provisionamento de aplicativos, consulte Implemente a escalabilidade de aplicativos.
O tamanho do estado do seu aplicativo é muito grande. Você pode monitorar o tamanho do estado do seu aplicativo usando a métrica
lastCheckpointSize.Os dados de estado do seu aplicativo são distribuídos de forma desigual entre as chaves. Se seu aplicativo usa o operador
KeyBy, verifique se os dados recebidos estão sendo divididos igualmente entre as chaves. Se a maioria dos dados estiver sendo atribuída a uma única chave, isso cria um gargalo que causa falhas.Seu aplicativo está enfrentando contrapressão na memória ou na coleta de resíduos. Monitore
heapMemoryUtilization,oldGenerationGCTimeeoldGenerationGCCountdo seu aplicativo em busca de picos ou valores cada vez maiores.