无法获取连接,池错误 在 PutSQL 中等待空闲对象超时?

2023-12-22

我已将 PutSQL 处理器的并发任务增加到“10”。

此时它显示以下错误,但没有数据丢失。

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: 

如果我删除了并发任务,那么它就可以正常工作,没有这些例外

当谷歌搜索这个异常时,我在下面的链接中找到了答案

当我尝试在 Web 应用程序中创建超过 250 个线程时,出现 Cannot get a connection, pool error Timeout waiting foridle object https://stackoverflow.com/questions/11734808/i-am-getting-cannot-get-a-connection-pool-error-timeout-waiting-for-idle-object

但我不知道如何在 NiFi putSQL 中避免这个问题。

谁能帮我解决这个问题?


当池管理器无法与等待的请求者建立可行的连接并且 maxWait 已过从而触发超时时,就会发生此异常。 原因有多种,但通常分为两大类:

  • 数据库已关闭或无法访问。
  • 连接池(最大活动设置为 100)没有连接。

nifi 中的 DBCPConnectionPool 控制器服务默认有 8 个最大连接,最大等待时间为 500 毫秒。当 PutSQL 处理器占用 DBCP 池中的 8 个连接并且请求第 9 个连接或超过最大连接限制时,它将抛出“无法获取连接”异常。

您可以尝试两件事来避免此异常:

  1. 您可以增加 DBCPConnectionPool 控制器中的“最大等待时间”
    服务配置。
  2. 您可以增加“最大总连接数”限制 DBCPConnectionPool 控制器服务配置。

请找到下面的屏幕截图,您需要在其中进行更改。

它可能会解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法获取连接,池错误 在 PutSQL 中等待空闲对象超时? 的相关文章

随机推荐