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

Flink CDC中 2.3 造成oracle session数过多问题有解决?看代码里面,好像存在

Flink CDC中 2.3 造成oracle session数过多问题有解决?看代码里面,好像存在连接泄露,持有connection,task执行完毕就完了,也没close,task对象随着栈帧的退出就收回了,其持有的connection也就没了,还有就是为什么不考虑connection pool,按照debezium的说明设置了连接池参数,好像并不能影响connection数量,还有几个内部查 schema的的sql建议优化,有些特殊场景会查不到schema信息

展开
收起
真的很搞笑 2023-07-13 11:16:49 256 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 Flink 1.13 及更高版本中,Flink CDC 提供了 Oracle CDC 的新实现方式,即使用 Oracle LogMiner 来实现增量更新,而不是使用 Oracle XStream API。相比于 XStream API,LogMiner 实现方式在处理大量更新时可以减少对 Oracle 数据库的连接数和资源占用,从而提高 CDC 的性能和稳定性。

    在使用 Oracle CDC 时,您可以将 Flink 的配置文件中的 cdc.oracle.xstream 参数设置为 false,从而启用 LogMiner 实现方式。同时,您还需要将 Oracle 数据库的日志模式设置为 ARCHIVELOG,以启用 LogMiner 功能。在启用 LogMiner 后,Flink CDC 会通过 LogMiner API 从 Oracle 数据库的归档日志中获取增量更新数据。

    需要注意的是,使用 LogMiner 实现方式可能会对 Oracle 数据库产生一定的性能和资源占用的影响,因此需要根据实际情况进行评估和调整。此外,LogMiner 实现方式可能会受到 Oracle 版本、数据库设置和环境因素等方面的影响,需要根据实际情况进行调试和优化。

    如果您使用的是 Flink 1.12 或更早版本,您可以考虑使用 Flink CDC 的连接池功能,通过复用连接来减少 Oracle 数据库的连接数和资源占用。例如,您可以在 CDC 的配置文件中设置以下参数:

    Copy
    cdc.oracle.connection-pool.enabled=true
    cdc.oracle.connection-pool.max-idle=10
    cdc.oracle.connection-pool.min-idle=2
    在上述配置中,cdc.oracle.connection-pool.enabled 参数用于启用连接池功能,cdc.oracle.connection-pool.max-idle 参数用于设置连接池中最大的空闲连接数,image.png

    2023-07-30 06:55:56
    赞同 展开评论 打赏
  • 在 Flink CDC 2.3 版本中,确实存在一些可能导致 Oracle 数据库会话数过多的问题。其中可能包括连接泄漏、未关闭连接以及对于连接池的缺乏支持。

    针对这些问题,Flink CDC 团队一直在不断改进和优化,以提供更好的解决方案。最新版本的 Flink CDC 可能已经修复了部分问题,并可能引入了一些与连接管理和连接池相关的改进。

    如果您在使用 Flink CDC 2.3 遇到了连接泄露或会话数过多的问题,可以考虑以下几点:

    1. 升级到最新版本:尽量升级到最新版本的 Flink CDC,以获取最新的功能和改进。新版本可能已经解决了一些连接管理和连接池相关的问题。

    2. 显式关闭连接:在 Flink 的任务中,确保在不再需要连接时显式地关闭它们,以避免连接泄漏。可以在任务的 open() 方法中创建连接,在 close() 方法中关闭连接。这样可以确保任务执行完毕后正确释放连接资源。

    3. 考虑连接池:虽然 Flink CDC 目前可能没有内置的连接池机制,但您可以自行集成第三方的连接池库,如 HikariCP 或 Apache Commons DBCP,以辅助管理连接。通过配置适当的连接池参数,可以更好地控制连接的创建和复用。

    4. 优化内部的 schema 查询 SQL:如果您遇到了查询 schema 信息时无法获取到的问题,可以尝试对查询语句进行优化。这可能包括添加必要的索引、调整查询计划或使用更高效的查询方式,以提高查询性能和稳定性。

    需要注意的是,具体的解决方案可能因 Flink CDC 版本和特定环境而异。建议查阅最新版本的 Flink CDC 文档、社区讨论或向 Flink 的官方支持渠道寻求帮助,以获得更准确和针对性的解决方案。

    2023-07-29 23:19:52
    赞同 展开评论 打赏
  • 没解决,你们kafka分区数可以设置为一吗?设置为一唯一的一个问题就是数据无法分布了,如果topic数据太多,有可能其他的kafka集群还有空间,有一个单独就撑爆了。如果你们空间大这个问题也不算什么问题,此回答整理自钉群“Flink CDC 社区”

    2023-07-13 13:07:47
    赞同 展开评论 打赏

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

相关产品

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

    更多
    PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
    PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
    Oracle云上最佳实践 立即下载

    相关镜像