请教一个问题,我有一个flink cdc job,在session模式下一直报错 Caused by: org.apache.flink.util.FlinkRuntimeException: java.sql.SQLTransientConnectionException: connection-pool-172.17.16.31:3306 - Connection is not available, request timed out after 30000ms. at com.ververica.cdc.connectors.mysql.source.connection.JdbcConnectionFactory.connect(JdbcConnectionFactory.java:72) at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:890) at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:885) at io.debezium.jdbc.JdbcConnection.connect(JdbcConnection.java:418) at com.ververica.cdc.connectors.mysql.debezium.DebeziumUtils.openJdbcConnection(DebeziumUtils.java:61) ... 14 more Caused by: java.sql.SQLTransientConnectionException: connection-pool-172.17.16.31:3306 - Connection is not available, request timed out after 30000ms. at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696) at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) at com.ververica.cdc.connectors.shaded.com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100) at com.ververica.cdc.connectors.mysql.source.connection.JdbcConnectionFactory.connect(JdbcConnectionFactory.java:59) ... 18 more 但是使用yarn-per-job模式就没有问题,我试图在source里面加大connection.pool.size到30也没有用,我job本身的并行度只有3。请问有遇到过这个问题的吗,我的sql就是select出来就写入下游,也没有lookup join?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到您描述的问题,看起来是Flink CDC作业在尝试与MySQL数据库建立连接时超时,导致无法获取到可用的数据库连接。这个问题可能由多种原因引起,以下是一些建议和排查方向:
检查数据库连接配置:确认您的数据库连接参数(如URL、用户名、密码)是否正确无误,以及网络配置是否允许从Flink任务所在的容器或节点访问MySQL数据库。
数据库连接数限制:检查MySQL服务器的max_connections设置,确保它没有达到上限。当并发连接请求超过MySQL的最大连接数时,新的连接请求会被拒绝,这可能是导致问题的原因之一。可以通过执行SHOW VARIABLES LIKE 'max_connections';来查看当前设置。
HikariCP配置优化:
connection.pool.size,但似乎没有解决问题。除了池大小外,还可以考虑调整HikariCP的其他参数,比如connectionTimeout(连接超时时间)、validationTimeout(验证连接超时时间)、idleTimeout(空闲连接超时期限)等,以适应您的环境。资源限制:在Session模式下,可能存在资源分配不足的情况。虽然YARN-Per-Job模式运行正常,但Session模式可能需要更明确的资源预留。检查您的Flink集群资源管理配置,确保为TaskManager分配了足够的内存和CPU资源。
网络问题:如果Flink作业运行在容器或Kubernetes集群中,检查网络策略是否有可能阻止或延迟了到MySQL数据库的连接。
日志分析:深入分析Flink和HikariCP的日志,可能会提供更多关于连接失败的具体原因。特别是关注是否有任何错误信息或警告提示数据库拒绝连接、网络不稳定或认证失败等问题。
版本兼容性:确认使用的Flink、Debezium MySQL Connector及HikariCP版本之间是否存在已知的兼容性问题。有时候,升级到最新稳定版可以解决这些问题。
如果以上建议都无法解决问题,建议进一步详细检查Flink作业的运行日志,并考虑在相关技术社区或论坛(如Apache Flink的用户邮件列表、GitHub issue页面或Stack Overflow)寻求帮助,提供尽可能多的信息以便获得更专业的指导。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。