各位大佬是否遇到过flink1.15.3+cdc2.3.0同步oracle 连接数一直不释放的问题?

各位大佬是否遇到过flink1.15.3+cdc2.3.0同步oracle 连接数一直不释放的问题吗 请问大佬们怎么解决的?一直增长 知道连接数满

展开
收起
真的很搞笑 2023-05-23 17:56:10 145 分享 版权
阿里云 AI 助理回答

在使用 Flink 1.15.3 和 CDC 2.3.0 同步 Oracle 数据时,如果遇到连接数一直不释放并持续增长的问题,可能是由于连接池配置不当、CDC 全量阶段的并发设置过高或未正确管理连接复用等原因导致的。以下是针对该问题的详细分析和解决方案:


1. 检查全量阶段的并发设置

在 CDC 的全量读取阶段,Flink 会为每个并发任务创建独立的数据库连接。如果并发度设置过高,可能会导致连接数迅速增加。

解决方法: - 降低作业并发度:检查当前作业的并发度设置,适当减少并发度以降低连接数压力。 - 优化 SQL 逻辑:如果可能,尝试使用 CREATE TABLE AS (CDAS) 语法来复用连接,从而减少连接数。


2. 配置连接池参数

连接池的大小直接影响到数据库连接数的使用情况。如果连接池配置过大,可能会占用大量连接资源。

解决方法: - 调整连接池大小: - 在 Hologres 或其他目标存储中,可以通过 connectionMaxActive 参数限制连接池的最大连接数。 - 如果作业中有多个表,建议为不同的表设置不同的 connectionPoolName,避免连接池被过度占用。 sql -- 示例:为不同表设置不同的连接池名称 'connectionPoolName' = 'pool1' - 共享连接池:从 VVR 8.0.4 版本开始,相同 endpoint 的表会默认共享连接池。如果您的版本支持此功能,请确保合理利用。


3. 开启 Source 复用功能

在多表同步场景下,开启 Source 复用可以显著减少 Binlog 连接数。

解决方法: - 在 SQL 作业中启用 Source 复用功能:

SET 'table.optimizer.source-merge.enabled' = 'true';
  • 全量读取阶段:Binlog 连接数等于 Source 并发度。
  • 增量读取阶段:Binlog 连接数等于 1。
  • 注意:启用 Source 复用后,需要无状态启动作业,否则可能导致数据丢失或无法启动。

4. 检查连接是否被正确释放

如果连接数持续增长且不释放,可能是由于连接未被正确关闭或存在连接泄漏。

解决方法: - 监控连接数:通过数据库的监控工具(如 MySQL 的 SHOW PROCESSLIST 或 Oracle 的 V$SESSION)查看当前活跃连接数,确认是否存在连接泄漏。 - 调整超时时间:在连接器中设置合理的超时时间,例如 jdbcReadTimeoutMsjdbcScanTimeoutSeconds,确保长时间未使用的连接能够被自动释放。


5. 升级 Flink 和 CDC 版本

某些连接数问题可能是由于已知的缺陷引起的。升级到更高版本的 Flink 和 CDC 可能会修复这些问题。

解决方法: - 升级到最新版本:根据知识库中的信息,Flink 和 CDC 的新版本修复了多个与连接数相关的缺陷,例如全量转增量读取时的数据丢失问题。 - 检查 Maven 仓库路径:如果使用的是 2.x 版本的 CDC,确保 group id 已从 com.alibaba.ververica 改为 com.ververica


6. 调整 Checkpoint 配置

Checkpoint 的间隔时间过长可能导致全量读取完成后延迟进入增量读取阶段,从而延长连接的占用时间。

解决方法: - 缩短 Checkpoint 间隔:将 execution.checkpointing.interval 设置为更短的时间(例如 10 秒),以加快全量到增量的切换。

execution.checkpointing.interval=10s

7. 使用社区版 CDC 连接器

如果问题仍然存在,可以尝试使用社区版 CDC 连接器,确保其与当前 Flink 版本兼容。

解决方法: - 下载对应版本的社区版 CDC JAR 包,并上传到实时计算控制台。 - 在 SQL 作业中指定社区版 CDC 连接器作为 connector 参数。


重要提醒

  • 连接数限制:请确保目标数据库的连接数上限足够高,否则可能会触发 remaining connection slots are reserved for non-replication superuser connections 错误。
  • 性能权衡:在调整并发度和连接池大小时,需综合考虑性能和资源消耗,避免因过度优化导致吞吐量下降。

通过以上步骤,您可以有效解决 Flink 1.15.3 和 CDC 2.3.0 同步 Oracle 时连接数不释放的问题。如果问题仍未解决,建议进一步排查具体作业日志和数据库连接状态,定位潜在的异常点。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

大数据领域前沿技术分享与交流,这里不止有技术干货、学习心得、企业实践、社区活动,还有未来。

还有其他疑问?
咨询AI助理