【问题标题】:Connection Pool running out of connection. Using DBCP2 BasicDataSource in Jetty embedded server连接池连接不足。在 Jetty 嵌入式服务器中使用 DBCP2 BasicDataSource
【发布时间】:2019-01-25 07:15:07
【问题描述】:

以下是在我的应用程序中配置连接池的详细信息。我正在使用 Oracle 12C。

 initialSize=20    
 maxTotal=100
 minIdle=20
 maxWaitMillis=45000
 minEvictableIdleTimeMillis=3600000
 validationQueryTimeout=2
 removeAbandonedTimeout=10
 removeAbandonedTimeout=60
 removeAbandonedOnBorrow=true
 accessToUnderlyingConnectionAllowed=true
 testOnBorrow=true
 testWhileIdle=true
 logAbandoned=true
 defaultQueryTimeout=120

活动连接的数量本质上是递增的,当达到 100 时,它会引发错误。对于发布连接,我使用 DataSourceUtils.releaseConnection(connection, datasource)。我也在某些地方使用 DelegatingConnection。在这种情况下,连接不会返回到池中。我已经运行了 sonarqube,但它没有显示任何潜在的连接泄漏。如果我在配置连接池时需要更改任何内容,请建议我

【问题讨论】:

  • removeAbandonedTimeout 的两个条目?
  • 那是一个错字。其中之一是用于 prod 环境。
  • 池用尽的速度有多快?是否有慢查询?获取堆转储并对其进行分析。
  • 我们将查询超时设置为 120 秒。因此,即使任何查询花费超过 120 秒,它也会抛出异常并释放连接(最终写入)。在我的情况下,活动连接的数量在大约 2 小时内增加了 1 个连接,并且在 3 天内池中的连接用完了。

标签: java database oracle jetty connection-pooling


【解决方案1】:

我已经解决了这个问题。需要注意的一点是我们不应该关闭委托连接,而是应该关闭包装连接。它解决了我面临的问题。

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 2012-02-11
    • 2016-05-02
    • 2018-09-08
    • 1970-01-01
    • 2017-03-13
    • 2017-07-23
    • 2016-01-30
    • 2022-01-12
    相关资源
    最近更新 更多