我已将并发任务增加为“10'对于PutSQL处理器。
此时它显示以下错误,但没有数据丢失。
failed to process due to org.apache.nifi.processor.exception.ProcessException: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object; rolling back session:
如果我删除了并发任务,那么它没有那些例外
虽然谷歌这个例外我在下面的链接中找到了答案
但我不知道如何在NiFi putSQL中避免这个问题。
有人可以帮我解决这个问题吗?
答案 0 :(得分:9)
当池管理器无法与等待请求者建立可行连接并且maxWait已经通过因此触发超时时,会发生此异常。 有几个原因,但它们通常分为两大类:
nifi中的DBCPConnectionPool控制器服务默认最大连接数为8,最大等待时间为500毫秒。当PutSQL处理器从DBCP池占用8个连接时,当它请求第9个连接或超过最大连接限制时,它将抛出“无法获得连接”异常。
你可以尝试两件事来避免这种例外:
答案 1 :(得分:1)
如果某些连接从未关闭,则会发生此异常,因此它们不会再次在池中可用。 因此,越来越多的连接保持打开状态,直到达到最大值。
确保所有线程都关闭了所使用的连接。