Flink CDC中 2.2.1 造成oracle session数过多,吃内存有优化的方案没呢?
调整Flink任务并行度:增加并行度可以分散session的创建,减少单个任务的内存压力,但需注意不要超过Oracle的连接数限制。
优化fetch.size和query.split.size配置:适当增加fetch.size来减少网络IO次数,同时调整query.split.size以优化数据读取的粒度。
使用连接池:如果可能,配置连接池(如DBCP或HikariCP)来复用数据库连接,减少新建和销毁session的开销。
监控和调整Oracle的会话参数:检查Oracle的SESSIONS参数,根据实际需求调整最大会话数。
优化Flink的buffer和状态管理:检查Flink的内存配置,如taskmanager.memory.task.heap.size,确保内存管理有效。
整并行度:增加Flink任务的并行度,可以分散session压力,减少单个任务对内存的占用。合理设置并行度能改善资源使用。
优化读取策略:如果可能,使用split-aware模式来减少并发session,或者调整table.cdc.source.partition.num以控制并行分区数。
设置合适的缓冲区大小:调整Flink的缓冲区大小(buffer-size和max-buffer-size)来控制数据流处理的内存消耗。
监控和限制连接数:通过监控Oracle数据库的连接数,确保不超过Oracle的最大连接数,避免过多连接占用内存。
优化Flink配置:根据实际需求调整Flink的内存配置,如taskmanager.memory.task.heap.size等,确保内存分配合理。
升级或优化Oracle配置:检查Oracle数据库的配置,优化内存分配,或升级到更高效版本。
一般优化可以配置心跳间隔与超时时间:确保Flink客户端与Oracle数据库之间的心跳机制配置得当,避免因心跳过于频繁导致的session资源占用。可以通过增大心跳间隔和心跳超时时间来减少对Oracle数据库session的频繁创建与维护,从而减轻内存压力。
另外优化Session集群资源配置:
增加Task Managers数量:根据作业的并发需求适当增加Task Managers的数量,但需注意不要过度增加以防止资源争抢。保持taskmanager.numberOfTaskSlots为默认值1,避免因slot共享导致的额外资源消耗和复杂性。
调整JobManager与TaskManager资源:对于大规模作业或复杂拓扑,适当增加JobManager的CPU和内存配置,以及TaskManager的资源,如CPU和内存大小,以提升整体处理能力和稳定性。例如,Job Manager CPUs可设为4,Memory设为8 GiB;Task Manager CPUs设为2,Memory设为4 GiB
参考文档: https://help.aliyun.com/zh/flink/user-guide/debug-a-deployment
可以避免 Flink 作业失败后不断重启,从而减少对 Oracle 会话数的压力。可以在 Flink 作业配置中设置重启策略
restart-strategy: fixed-delay
restart-strategy.fixed-delay.attempts: 2
restart-strategy.fixed-delay.delay: 10 s
优化 Oracle 数据库的配置参数,如 PROCESSES 和 SESSIONS,以允许更多的用户连接。
可以设置下session 的最长连接时间了,到时间就断。
# 查看是否开启
show parameter resource_limit;
# 开启 resource_limit
alter system set resource_limit=true;
create profile NEW_PROFILE
limit
idle_time 1
connect_time 2;
alter user MY_USER profile NEW_PROFILE;
——参考链接。
针对Flink CDC在处理Oracle数据源时可能导致session数过多、占用大量内存的问题,
https://help.aliyun.com/zh/flink/getting-started/use-built-in-public-datasets-to-experience-realtime-compute-for-apache-flink
针对Flink CDC在处理Oracle数据源时导致Session数过多、消耗大量内存的问题,可以通过以下策略进行优化:
连接池管理:
资源限制与优化:
SQL作业优化:
分批读取策略:
Oracle数据库层面优化:
合理安排Checkpoint策略:
监控与调优:
通过上述方法综合优化,可以在很大程度上缓解Flink CDC处理Oracle数据时因Session过多导致的内存消耗问题。不过,请注意,具体实施时需结合实际业务场景和资源条件做适当调整。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。