NiFi(至少自1.8.0起)开箱即用,似乎为每个启用的DBCPConnectionPool控制器服务打开了一个数据库连接。我已经配置了多个DBCPConnectionPool控制器服务,以使用不同的选项访问同一服务器,因此,这很快就增加了与数据库服务器的连接数量。我有一个预定的工作流程,它每晚运行。连接不需要活动,除非在短时间内处于活动状态。
环顾DBCPConnectionPool documentation,似乎发现与Apache Commons-DBCP BasicDataSource
参数(如minIdle
和{{)相关的 not 控制器服务配置选项1}},在我的特定用例中,我认为都应将其都设置为0。另外,我认为即使在分钟范围内,我也可以将maxIdle
设置为某个值,并满足我的用例(不必立即在合理的时间内释放连接)。>
是否可以在不修改DBCPConnectionPool代码的情况下传递此选项?通过在NiFi DBCPConnectionPool控制器服务配置上将它们设置为动态属性,Commons-DBCP是否会接受作为JDBC参数传递的这些选项?
答案 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。