【问题标题】:Kafka connect confluent jdbc does not control session pool in MSSQL databaseKafka connect confluent jdbc不控制MSSQL数据库中的会话池
【发布时间】:2020-08-14 08:02:32
【问题描述】:

我正在使用 Kafka 连接和融合 jdbc。将源连接器与Mssql集成,前几天操作区警告我们数据库中有大量处于“睡眠”状态的会话。我需要控制这些会话,但显然连接器(confluent jdbc)在其配置中没有这些属性。

你有什么想法可以解决这个问题吗?

【问题讨论】:

  • 您正在运行多少个连接器?有多少tasks.max
  • 我们有 27 个连接器源(每个表 1 个同一个数据库),每个都有 tasks.max=1 在一个有 3 个节点的集群中
  • 每个连接器是否具有不同的属性,或者您可以将它们组合起来吗?
  • 每个连接器具有相同的属性,但不同的查询、前缀主题和不同的转换
  • 您能解释一下连接是如何与数据库中的会话相关的吗?也就是说,如果我有 1 个连接器在其 task.max = 1 的集群(具有 3 个节点)中复制,我会有 1 个或 3 个活动会话吗?

标签: apache-kafka apache-kafka-connect confluent-platform


【解决方案1】:

Kafka Connect 将为每个连接器运行至少一个任务。每个连接器都彼此隔离,并且除了共享运行时环境之外,还与其他连接器隔离。

因此,如果您有 27 个来自同一个数据库的连接器,那么您将至少有 27 个连接到该数据库。

如果您不能减少连接器的数量(例如,通过从多个表中提取一个连接器),那么我认为您唯一的选择就是与您的 DBA 讨论在 RDBMS 端执行某种资源管理.例如,在 Oracle 上,可以为此使用资源管理器选项。

【讨论】:

  • 好吧,我设法验证每个连接器总是在数据库中打开两个会话。我们总是有 54 个会话与我的 27 个连接器(kafka 连接 3 个节点)。行为与 Kafka Connect 节点的数量无关,对于具有 3 个节点和 1 个节点的环境,结果是相同的(每个连接器的 MSSQL 数据库中的 2 个会话处于休眠状态)。不幸的是,我无法按某些标准对连接器进行分组。我将别无选择,只能开发一个可以更好地控制数据库连接打开的自定义连接器。感谢您的帮助
  • 表监视器线程也打开 1 个连接,因此总连接数(每个连接器)= Min(总任务,总表)+ 1。
猜你喜欢
  • 2019-02-25
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 2018-12-14
  • 2017-03-26
  • 2017-12-10
相关资源
最近更新 更多