在进行作业恢复时,从检查点或快照中恢复相较于无状态启动,关键在于高效地从远程持久存储中下载状态文件并重建状态引擎。这一步骤需要执行大量的输入输出操作,容易成为恢复过程中的效率瓶颈,可能会造成作业的长时间停滞。本文为您介绍作业启动和扩缩容过程中瓶颈问题的诊断方法和调优策略,助力您高效提升系统性能。
诊断步骤
在作业启动或进行扩容操作期间,如果发现作业长时间停留在初始化阶段,应首先诊断是否存在初始化瓶颈。以下是推荐的诊断步骤:
使用诊断工具分析算子状态:利用Thread Dump、线程动态分析和火焰图等工具,检查初始化阶段的算子线程栈。重点关注线程栈是否长时间处于等待状态,尤其是在Gemini等状态存储系统上的操作。诊断工具使用方式请参见分析工具使用方式。
识别状态算子的初始化问题:如果发现某个算子长时间处于初始化状态,且该算子涉及状态处理,那么可以推断问题可能出在状态的下载或重建过程中。
调优策略
为了提升作业启动和扩容效率,一旦确定大状态处理是作业初始化的瓶颈,您可以参考如下方案进行针对性调整。
策略 | 策略说明 | 配置方法 | 注意事项 |
动态扩缩容 | 可以实现更快的让参数配置生效,减少作业启停对业务的中断时间,方便进行TM动态扩缩容。 | 详情请参见动态扩缩容与参数动态更新。 | 动态更新为实验性功能,在动态更新参数时,业务并不是完全不中断。相比传统的参数修改模式,动态更新能够显著缩短中断时间,但中断的具体时长受到作业拓扑和状态大小等因素的影响,通常在5秒至1分钟之间。 |
Local Recovery:本地备份快照加速恢复 | 在本地同时存储快照,可减少恢复过程中的数据下载需求。当本地磁盘空间充裕时,为首选方案。 | 在运行参数中配置
,配置方法请参见如何配置作业运行参数? |
|
GeminiStateBackend智能懒加载和延迟剪裁:异步状态恢复方案 | 作为平台核心技术GeminiStateBackend,即使面对大规模状态的作业,也能仅通过下载必要的元数据快速启动,实现对数据的即时处理。随后,系统将通过异步下载和智能裁剪技术,有效处理远程检查点文件,显著降低作业中断时间,提升效率超过90%,详情请参见企业级状态后端存储介绍。 | 在运行参数中配置
,配置方法请参见如何配置作业运行参数? 说明 仅实时计算引擎VVR 6.0.6及以上版本支持该参数。 | 作业刚启动后的一小段时间内,会异步下载状态文件,作业性能逐步恢复,因此一开始性能会稍微低一些。 |
相关文档
大状态作业导致的问题和诊断调优整体思路详情,请参见大状态作业调优实践指南。
Flink SQL由优化器根据配置项以及SQL语句来推导生成状态算子,想要高效处理有状态的大规模数据和性能调优,需要对SQL状态算子生成机制、管理策略、诊断方法和调优方法有一定了解,详情请参见SQL作业大状态导致反压的调优原理与方法。
Flink Datastream API在状态管理方面提供了灵活的接口,您可以采取相关措施来确保状态大小可控,避免状态的无限制增长,详情请参见DataStream作业大状态导致反压的调优原理与方法。