檢查點逾時 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

檢查點逾時

如果應用程式未最佳化或正確佈建,檢查點可能會失敗。本節說明此狀況的徵狀和疑難排解步驟。

徵狀

如果應用程式的檢查點失敗,numberOfFailedCheckpoints 將會大於零。

檢查點可能會因為直接失敗 (例如應用程式錯誤) 或暫時性失敗 (例如應用程式資源不足) 而失敗。檢查應用程式日誌和指標是否有下列徵狀:

  • 程式碼中有錯誤。

  • 存取應用程式相依服務時發生錯誤。

  • 序列化資料時發生錯誤。如果預設的序列化程式無法序列化應用程式資料,則應用程式將失敗。如需在應用程式中使用自訂序列化程式的詳細資訊,請參閱 Apache Flink 文件中的資料類型和序列化

  • 記憶體不足錯誤。

  • 以下指標急劇增加或穩定增加:

    • heapMemoryUtilization

    • oldGenerationGCTime

    • oldGenerationGCCount

    • lastCheckpointSize

    • lastCheckpointDuration

如需監視檢查點的詳細資訊,請參閱 Apache Flink 文件中的監視檢查點

原因和解決方案

您的應用程式日誌錯誤訊息會顯示直接失敗的原因。暫時性失敗可能有下列原因:

  • 應用程式佈建的 KPU 不足。如需增加應用程式佈建的相關資訊,請參閱擴展

  • 應用程式狀態大小太大。您可以使用 lastCheckpointSize 指標監控應用程式狀態大小。

  • 應用程式的狀態資料在索引鍵之間分配不平均。如果應用程式使用 KeyBy 運算子,請確保您的傳入資料在索引鍵之間已平均分割。如果將大部分資料指派給單一索引鍵,則會產生瓶頸,從而導致失敗。

  • 應用程式遇到記憶體背壓或垃圾回收背壓。監控應用程式的 heapMemoryUtilizationoldGenerationGCTime 以及 oldGenerationGCCount,看是否有值在急劇增加或穩定增加。