【问题标题】:NiFi database connection pool not working correctlyNiFi 数据库连接池无法正常工作
【发布时间】:2020-11-14 12:23:03
【问题描述】:

我注意到我们的 NiFi 1.7 集群和 Oracle 19c 数据库之间的 NiFi DBCP 连接池中有一些奇怪的行为。当 NiFi 集群负载不足时,它会停止重用池中的数据库连接。相反,它使用一次连接,关闭它,然后打开另一个。 NiFi 日志文件或数据库中没有错误 - 没有超时、没有断开的连接或返回错误。

控制器服务中的“最大等待时间”设置为“500 毫秒”(默认),“最大总连接数”设置为“200”。我们从来没有得到超过 30 个连接,并且我们的日志中没有超时错误。所有数据库事务仍在完成,但由于额外的登录开销,它们花费的时间比应有的要长得多。数据库审计跟踪显示干净的注销,因此这似乎是 NiFi 故意在做的事情。

我已经搜索了这个论坛和其他几个论坛,除了可能是一个错误之外,没有找到任何其他这种行为的例子或任何导致它的线索。有没有其他人看到这种行为或有任何想法如何纠正它或进一步排除故障?是否有我们可以调整的 NiFi 或 DBCP 参数会有所帮助?我无法识别一个看起来很明显的。

很遗憾,目前无法升级我们的 NiFi...

我会发布日志等,但那里确实没有什么可看...

【问题讨论】:

  • 如果您有 v1.7 并且无法升级 nifi - 没有简单的方法可以更改其他 DBCP 参数,然后您会在当前版本中看到。 nifi中使用的BasicDataSource的问题有max idle connections = 8。也许您可以重新编译 dbcp 组件以公开其他 BasicDataSource 属性。

标签: oracle apache-nifi connection-pooling apache-commons-dbcp


【解决方案1】:

您是否设置了Validation Query 属性?它用于验证连接以查看它们是否应该被驱逐或重用。对于 Oracle,我认为您可以将其设置为 SELECT 1 FROM DUAL,这可能有助于防止单个连接被丢弃和重新创建。

还有其他 DBCP 属性可以设置为 DBCPConnectionPool 上的用户定义属性,但直到 NiFi 1.9(通过 NIFI-5790)才可用,所以如果这些是您的属性,您需要升级正在寻找。

【讨论】:

  • 据我所知,它甚至没有运行验证查询。当它运行一个查询时,连接只持续几分之一秒,然后它会彻底注销。 “连接池”根本不是真正的池。忽略所有 dbcp 参数。由于其他软件依赖关系,目前无法选择升级。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 2016-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多