【发布时间】: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