开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink CDC中 2.2.1 造成oracle session数过多,吃内存有优化的方案没呢?

Flink CDC中 2.2.1 造成oracle session数过多,吃内存有优化的方案没呢?

展开
收起
冲冲冲c 2024-06-26 10:29:02 80 0
7 条回答
写回答
取消 提交回答
  • 调整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,确保内存管理有效。

    2024-07-24 15:23:44
    赞同 展开评论 打赏
  • 整并行度:增加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数据库的配置,优化内存分配,或升级到更高效版本。

    2024-07-24 11:05:58
    赞同 展开评论 打赏
  • 阿里云大降价~

    一般优化可以配置心跳间隔与超时时间:确保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

    image.png

    参考文档: https://help.aliyun.com/zh/flink/user-guide/debug-a-deployment

    2024-07-23 17:18:45
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    可以避免 Flink 作业失败后不断重启,从而减少对 Oracle 会话数的压力。可以在 Flink 作业配置中设置重启策略

    restart-strategy: fixed-delay
    restart-strategy.fixed-delay.attempts: 2
    restart-strategy.fixed-delay.delay: 10 s
    

    优化 Oracle 数据库的配置参数,如 PROCESSES 和 SESSIONS,以允许更多的用户连接。

    2024-07-21 18:18:01
    赞同 展开评论 打赏
  • 可以设置下session 的最长连接时间了,到时间就断。

    • 需要开启 resource_limit
    # 查看是否开启
    show parameter resource_limit;
    # 开启 resource_limit
    alter system set resource_limit=true;
    
    • 新建一个 PROFILE 规则
    create profile NEW_PROFILE
    limit
    idle_time 1
    connect_time 2;
    
    • 用户指定 PROFILE 规则
    alter user MY_USER profile NEW_PROFILE;
    

    ——参考链接

    2024-07-21 16:15:33
    赞同 1 展开评论 打赏
  • 针对Flink CDC在处理Oracle数据源时可能导致session数过多、占用大量内存的问题,
    https://help.aliyun.com/zh/flink/getting-started/use-built-in-public-datasets-to-experience-realtime-compute-for-apache-flink
    image.png
    image.png

    2024-07-20 17:25:57
    赞同 展开评论 打赏
  • 针对Flink CDC在处理Oracle数据源时导致Session数过多、消耗大量内存的问题,可以通过以下策略进行优化:

    1. 连接池管理

      • 使用更高效的数据库连接池管理技术,如HikariCP、c3p0等,合理配置连接池大小,避免过度创建数据库连接。确保连接数既能满足数据读取需求,又不至于过度消耗资源。[1]
    2. 资源限制与优化

      • 在Flink作业配置中,合理设置Task Managers的数量及其内存分配,避免不必要的资源浪费。根据实际数据吞吐量和复杂度调整并行度,避免因并行度过高导致的Session资源占用过多。[1][2]
    3. SQL作业优化

      • 优化SQL查询逻辑,尽量减少不必要的JOIN操作和全表扫描,使用有效的索引策略减少数据库访问次数,从而降低Session的使用频率和持续时间。
    4. 分批读取策略

      • 考虑在Flink CDC的配置中采用分批读取数据的方式,而不是一次性加载大量数据,这样可以减少单个Session的生命周期内处理的数据量,减轻内存压力。
    5. Oracle数据库层面优化

      • 调整Oracle数据库的会话参数,如SESSION_CACHE_ADVICE、OPEN_CURSORS等,根据系统实际情况优化数据库会话管理设置。
    6. 合理安排Checkpoint策略

      • 适当调整Checkpoint间隔和模式,减少因频繁Checkpoint引起的数据库连接活跃和资源锁定,从而间接优化Session管理。
    7. 监控与调优

      • 实施细致的系统监控,定期分析资源使用情况,包括但不限于内存、CPU、网络和数据库连接数。基于监控数据不断调整优化策略,确保资源高效利用。

    通过上述方法综合优化,可以在很大程度上缓解Flink CDC处理Oracle数据时因Session过多导致的内存消耗问题。不过,请注意,具体实施时需结合实际业务场景和资源条件做适当调整。

    2024-07-20 17:25:57
    赞同 展开评论 打赏
滑动查看更多

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载

    相关镜像