c3p0所造成的死鎖如何解決

一个新手
發布: 2017-09-08 10:54:09
原創
2167 人瀏覽過

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

com.mchange.v2.async.ThreadPoolAsynchronousRunner -466510
78 [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!

#

以上是c3p0所造成的死鎖如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板