如何配置NiFi的DBCPConnectionPool使其不保持空闲连接打开?

时间:2018-11-01 22:18:16

标签: apache-nifi apache-commons-dbcp

NiFi(至少自1.8.0起)开箱即用,似乎为每个启用的DBCPConnectionPool控制器服务打开了一个数据库连接。我已经配置了多个DBCPConnectionPool控制器服务,以使用不同的选项访问同一服务器,因此,这很快就增加了与数据库服务器的连接数量。我有一个预定的工作流程,它每晚运行。连接不需要活动,除非在短时间内处于活动状态。

环顾DBCPConnectionPool documentation,似乎发现与Apache Commons-DBCP BasicDataSource参数(如minIdle和{{)相关的 not 控制器服务配置选项1}},在我的特定用例中,我认为都应将其都设置为0。另外,我认为即使在分钟范围内,我也可以将maxIdle设置为某个值,并满足我的用例(不必立即在合理的时间内释放连接)。

是否可以在不修改DBCPConnectionPool代码的情况下传递此选项?通过在NiFi DBCPConnectionPool控制器服务配置上将它们设置为动态属性,Commons-DBCP是否会接受作为JDBC参数传递的这些选项?

1 个答案:

答案 0 :(得分:1)

自1.8.0 keeps one connection per database open at all times起的NiFi,因为它使用Commons-DBCP 2.5.0的默认配置,该配置不会清除连接。 timeBetweenEvictionRunsMillis的Commons-DBCP默认值为-1,这将导致空闲连接逐出永远不会运行。

NiFi 1.8.0 不需要expose the Commons-DBCP configuration options来调整这些时间。

NiFi 1.9.0 expose these settings, added in this commit