チェックポイントがタイムアウトしています。 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

チェックポイントがタイムアウトしています。

アプリケーションが最適化されていなかったり、適切にプロビジョニングされていなかったりすると、チェックポイントが失敗する可能性があります。このセクションでは、この状態の症状とトラブルシューティングの手順について説明します。

症状

アプリケーションのチェックポイントに障害が発生すると、numberOfFailedCheckpoints が 0 より大きくなります。

チェックポイントが失敗するのは、アプリケーションエラーなどの直接的な障害でも、アプリケーションリソース不足などの一時的な障害でもかまいません。アプリケーションログとメトリクスをチェックして、次の症状がないか調べてください。

  • コード内のエラー。

  • アプリケーションの依存サービスへのアクセス中にエラーが発生しました。

  • データのシリアル化中にエラーが発生しました。デフォルトのシリアライザーがアプリケーションデータをシリアル化できない場合、アプリケーションは失敗します。アプリケーションでカスタムシリアライザーを使用する方法については、「Apache Flink ドキュメント」の「Data Types and Serialization」を参照してください。

  • メモリ不足のエラー

  • 以下の指標が急上昇または着実に増加しています。

    • heapMemoryUtilization

    • oldGenerationGCTime

    • oldGenerationGCCount

    • lastCheckpointSize

    • lastCheckpointDuration

チェックポイントの監視の詳細については、「Apache Flink ドキュメント」の「Monitoring Checkpointing」を参照してください。

原因と解決策

アプリケーションログのエラーメッセージには、直接的な障害の原因が示されます。一時的な障害には以下の原因が考えられます。

  • アプリケーションの KPU プロビジョニングが不十分。アプリケーションのプロビジョニングを引き上げる方法については、 アプリケーションスケーリングを実装する を参照してください。

  • アプリケーションの状態サイズが大きすぎる。lastCheckpointSize メトリクスを使用してアプリケーションの状態サイズを監視できます。

  • アプリケーションの状態データはキー間で不均等に分散されます。アプリケーションで KeyBy オペレータを使用する場合は、受信データがキー間で均等に分割されていることを確認してください。ほとんどのデータが 1 つのキーに割り当てられていると、障害の原因となるボトルネックになります。

  • アプリケーションにメモリやガベージコレクションのバックプレッシャが発生しています。アプリケーションのheapMemoryUtilizationoldGenerationGCTimeoldGenerationGCCount の値が急上昇していないか、または着実に増加していないかを監視します。