c3p0引起的數據庫死鎖問題

代碼測試本地無誤,於是放到外網服務器測試,出現了這樣的錯誤

 com.mchange.v2.async.ThreadPoolAsynchronousRunner -46651078 [Timer-18] WARN  com.mchange.v2.async.ThreadPoolAsynchronousRunner  - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1c17bd4 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 

看到這個頭都大了,怎麼辦呢?爲什麼出現這樣的情況?

我的答案是:

因爲數據庫的連接數是有限的,每次應用啓動C3p0都會佔用數據庫的連接來填充C3p0的連接池,而當數據庫的資源被佔光時就會因爲無法獲得共享資源而報死鎖。

更改對應配置文件裏面的最大連接數和初始化連接數:

未改前:

 <property name="maxPoolSize" value="100" />  

<property name="initialPoolSize" value="2" /> 


修改之後:

 <property name="maxPoolSize" value="1" />  

<property name="initialPoolSize" value="1" /> 


重新部署運行,ok!!!!特此記一筆!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章