druid連線池獲取不到連線的一種情況

2022-07-04 04:42:16 字數 1445 閱讀 8578

資料來源一開始配置:

jdbc.initialsize=1

jdbc.minidle=1

jdbc.maxactive=5

程式執行一段時間後,執行查詢拋如下異常:

exception=org.mybatis.spring.mybatissystemexception: nested exception is org.apache.ibatis.exceptions.persistenceexception:

### error querying database. cause: org.springframework.jdbc.cannotgetjdbcconnectionexception:could not get jdbc connection; nested exception is com.alibaba.druid.pool.getconnectiontimeoutexception: wait millis 60000, active 5, maxactive 5

### the error may exist in ...

懷疑是最大連線數不夠,講配置改為

jdbc.initialsize=1

jdbc.minidle=1

jdbc.maxactive=20

<

property

name

="removeabandoned"

value

="true"

/>

<

property

name

="removeabandonedtimeout"

value

="180"

/>

<

property

name

="logabandoned"

value

="true"

/>

拋如下異常:

紅色標註處連線未釋放,檢視**,

try

catch

(sqlexception e)

catch

(sqlexception ex)

} finally

這裡baseconn是通過druid datasource獲取的乙個pgsql 底層連線, 上面**執行完後,finally中呼叫baseconn.close()關閉了這個連線,(猜測關閉這個底層連線,druid連線池卻不知道,還認為自己擁有這個連線,但實際該連線是不可用的,這段**執行多次,就將druid連線池中所有連線都耗光了,於是便丟擲could not get jdbc connection錯誤。

將上面finally**塊改為

finally

即只呼叫druid 連線的close方法(只是釋放該連線,而不是直接關閉底層連線),問題解決。

Druid連線池入門

一 druid簡介 druid是乙個jdbc元件,它包括三部分 druid可以做什麼?1 可以監控資料庫訪問效能,druid內建提供了乙個功能強大的statfilter外掛程式,能夠詳細統計sql的執行效能,這對於線上分析資料庫訪問效能有幫助。2 替換dbcp和c3p0。druid提供了乙個高效 功...

Druid連線池配置

druid連線池,在阿里 使用過很好用的。druid集連線池,監控於一體整好復合當前專案的需要,專案是ssm結構,首先spring配置datasource,配置如下 id datasource class com.alibaba.druid.pool.druiddatasource init met...

druid連線池學習

注 filters 監控 servlet 當前sql 已執行次數 exectime 當前sql 已執行時間 execmax 當前sql 最大執行時間 txn當前執行的事務數量 error 當前sql 執行出錯的數目 update 當前sql 更新或者刪除操作中已經影響的行數 fetchrow 當前s...