Flink CDC1.16.0 1.17.1 版本 ,多跑几个双流join的job 好像就会卡住 大家有遇到过吗 ,基本三个或者以上大宽表的job时 ,web ui基本点不了 ,没反应,job也提交不了?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的问题,Flink CDC 1.16.0 和 1.17.1 版本在运行多个双流 JOIN 的作业时出现卡顿、Web UI 无响应以及无法提交新作业的情况,可能与以下几个方面的原因相关。以下是详细分析和解决方案:
当运行多个双流 JOIN 作业时,尤其是涉及大宽表的场景,可能会因为资源分配不足而导致系统卡顿或无响应。
优化状态管理:
JOIN_STATE_TTL
Hint 为双流 JOIN 的左右流分别设置合理的状态生命周期(TTL)。例如,左流可以设置较短的 TTL(如 12 小时),右流可以设置较长的 TTL(如 18 天)。SELECT /*+ JOIN_STATE_TTL('left_table' = '12h', 'right_table' = '18d') */ *
FROM left_table
JOIN right_table ON left_table.key = right_table.key;
table.exec.state.ttl
,以控制状态数据的过期时间。增加资源配置:
监控和调优:
State Backend 的选择和配置对双流 JOIN 作业的性能有重要影响。
启用 KV 分离优化:
table.exec.join.kv-separate: FORCE
优化 Checkpoint 配置:
execution.checkpointing.interval: 180s
如果作业中使用了自定义函数(UDF),可能会因为实现问题导致任务阻塞。
close
方法中可能存在长时间阻塞的操作,或者计算逻辑未及时返回结果,导致 Task 无法正常退出。排查自定义函数:
close
方法中没有长时间阻塞的操作。task.cancellation.timeout
参数为 0 来调试,找到处于 Cancelling 状态的 Task 并查看其栈信息:
task.cancellation.timeout: 0
优化计算逻辑:
根据知识库资料,实时计算 Flink 版在 2024 年 9 月 11 日发布了新版本,包含多项性能优化和缺陷修复。建议您升级到最新版本以解决潜在的兼容性问题。
升级引擎版本:
验证新功能:
针对您描述的问题,建议从以下几个方面入手: 1. 优化状态管理:合理设置状态生命周期(TTL),减少状态大小。 2. 调整资源配置:增加 TaskManager 和 JobManager 的内存,提升系统性能。 3. 启用 KV 分离优化:确保使用 Gemini StateBackend 并开启 KV 分离功能。 4. 排查自定义函数:检查是否存在阻塞逻辑,优化计算实现。 5. 升级引擎版本:升级到最新版本以获得性能优化和缺陷修复。
如果问题仍未解决,建议联系阿里云技术支持团队,提供详细的日志和作业配置信息以便进一步排查。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。